DbUtils结合C3p0实现数据库的增删改查



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();
    }
复制代码