DbUtils结合C3p0实现数据库的增删改查
dbutils快速入门
说明:本文非原生jdbc案例,通过DbUtils和C3p0实现对原生jsdc的简单封装。直接以案例开始
一.前期准备
*导入jar包
,
*添加c3p0配置文件和jdbcutils工具类
▶c3p0-config.xml(文件名称不能改变,且默认必须放在src目录下)
View Code▶jdbcutils工具类
View Code
▶建表、建实体类(表与实体类字段相对应)
二.使用queryRunner实现增删改查
*添加操作
QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());
//DbUtils结合c3p0插入====================================================================
String sql="insert into contect values(null,?,?,?,?)";
try {
int update = runner.update(sql,"王云","女","17601320125","孙敦");
System.out.println(update);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*修改操作
//DbUtils结合c3p0修改=====================================================================
String sql1 ="update contect set cname=? where id=?";
try {
int update = runner.update(sql1, "王云","1");
System.out.println(update);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*删除操作
//DbUtils结合c3p0删除======================================================================
String sql2="delete from contect where id=?";
try {
int update = runner.update(sql2, "1");
System.out.println(update);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*查询操作
▶ 自定义handler查询
MyHandler
public class MyHandler implements ResultSetHandler<List<Contect>>{
@Override
public List<Contect> handle(ResultSet rs) throws SQLException {
//封装数据,数据从Resultset中获取
ArrayList<Contect> list = new ArrayList<Contect>();
while(rs.next()){
Contect contect = new Contect();
String name = rs.getString("cname");
contect.setCname(name);
String sex = rs.getString("sex");
contect.setSex(sex);
String tel = rs.getString("tel");
contect.setTel(tel);
String address = rs.getString("address");
contect.setAddress(address);
list.add(contect);
}
return list;
}
}
查询
String sql3 ="select * from contect";
try {
List<Contect> contectList = runner.query(sql3, new MyHandler());
System.out.println(contectList);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
▶ResultSetHandler实现类介绍(由DBUtils框架给我们提供使用)实现类的学习方式:
先测试,根据测试结果总结当前实现类的按照什么样的方式封装数据(策略)
ArrayListHandler
String sql4 ="select * from contect";
try {
List<Object[]> list = runner.query(sql4, new ArrayListHandler());
for (Object[] objects : list) {
for (Object object : objects) {
System.out.println(object);
}
System.out.println("------------------------------------");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BeanHandler
String sql5 ="select * from contect where id=3";
try {
Contect contect = runner.query(sql5, new BeanHandler<Contect>(Contect.class));
System.out.println(contect);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BeanListHandler
String sql6 ="select * from contect where id=? ";
try {
List<Contect> list = runner.query(sql6, new BeanListHandler<Contect>(Contect.class),"2");
System.out.println(list);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ScalarHandler
String sql6 ="select * from contect ";
try {
Object object = runner.query(sql6,new ScalarHandler() );
System.out.println(object);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
