DbUtils结合C3p0实现数据库的增删改查
dbutils快速入门
说明:本文非原生jdbc案例,通过DbUtils和C3p0实现对原生jsdc的简单封装。直接以案例开始
一.前期准备
*导入jar包
,
*添加c3p0配置文件和jdbcutils工具类
▶c3p0-config.xml(文件名称不能改变,且默认必须放在src目录下)

▶jdbcutils工具类

▶建表、建实体类(表与实体类字段相对应)
二.使用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(); }