7.DbUtils实现增删改查

1.概述

image.png
image.png
image.png
image.png

2.实现增删改操作

2.1 添加操作

//    测试插入语句
    @Test
    public void test1() {
        Connection conn= null;
        try {
            QueryRunner runner=new QueryRunner();
            conn = JDBCUtils2.getConnection3();
            String sql="insert into customers(name,email,birth) values(?,?,?)";
            runner.update(conn,sql,"ccc","ccc.com","2020-12-09");
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);//ps的连接封装在queryrunner里面,关闭也在里面
//            这里关闭资源只是范湖到数据库连接池并不是真正的关闭
        }
    }

2.2 删除操作

//    测试删除语句
    @Test
    public void test2() {
        Connection conn= null;
        try {
            QueryRunner runner=new QueryRunner();
            conn = JDBCUtils2.getConnection3();
            String sql="delete from customers where id=?";
            runner.update(conn,sql,48);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

2.3 更改操作

//    测试更改语句
    @Test
    public void test3(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="update customers set name=? where id=?";
            runner.update(conn,sql,"sda",52);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

3.实现查询操作

3.1 以对象的形式返回

//    测试返回一条查询语句
//    ResultSetHandler是一个接口,BeanHandler是一个具体实现类
//    用于封装表中的一条记录
    @Test
    public void test4(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select id,name,email,birth from customers where id=?";
            BeanHandler<Customers> handler =new BeanHandler<>(Customers.class);
            Customers cus=runner.query(conn,sql,handler,10);
            System.out.println(cus);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }
//    返回多条查询语句
//    BeanListHandler是一个具体实现类,用于封装表中的多条记录
    @Test
    public void test5(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select id,name,email,birth from customers where id<?";
            BeanListHandler<Customers> handler=new BeanListHandler<>(Customers.class);
            List<Customers> list=runner.query(conn,sql,handler,10);
            list.forEach(o->System.out.println(o));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

3.2 以键值对的形式返回

//    MapHandler返回一个对象,将一个对象的具体属性以键值对来呈现
    @Test
    public void test6(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select id,name,email,birth from customers where id<?";
            MapHandler handler=new MapHandler();
            Map<String ,Object>map=runner.query(conn,sql,handler,10);
            System.out.println(map);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }
//    MapListHandler返回多个对象,将一个对象的具体属性以键值对来呈现,
//      多个对象存放在list集合里面
    @Test
    public void test7(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select id,name,email,birth from customers where id<?";
            MapListHandler handler=new MapListHandler();
            List<Map<String ,Object> >list=runner.query(conn,sql,handler,10);
            list.forEach(o->System.out.println(o));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

3.3 返回特殊值

//    查询表中的特殊值
//    ScalarHandler
    @Test
    public void test8(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select count(*) from customers";
            ScalarHandler handler=new ScalarHandler();
            Long cnt=(Long)runner.query(conn,sql,handler);//查询返回Obj对象
            System.out.println(cnt);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }
    @Test
    public void test9(){
        Connection conn=null;
        try {
            QueryRunner runner=new QueryRunner();
            conn=JDBCUtils2.getConnection3();
            String sql="select max(birth) from customers";
            ScalarHandler handler=new ScalarHandler();
            Date d =(Date)runner.query(conn,sql,handler);//查询返回Obj对象
            System.out.println(d);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

3.4 自定义ResultSetHandle接口实现类

//    当没有自己想要的实现类是可以自己创建匿名实现类(Lambda表达式)
    @Test
    public void test10() throws Exception {
        Connection conn=JDBCUtils2.getConnection3();
        QueryRunner runner=new QueryRunner();
        String sql="select id,name,email,birth from customers where id=?";
        ResultSetHandler<Customers> handler= resultSet -> {
            if(resultSet.next()){
                int id=resultSet.getInt("id");
                String name=resultSet.getString("name");
                String email=resultSet.getString("email");
                Date birth=resultSet.getDate("birth");
                return new Customers(id,name,email,birth);
            }
            return null;
        };
//        ResultSetHandler<Customers> handler=new ResultSetHandler<Customers>() {
//            @Override
//            public Customers handle(ResultSet resultSet) throws SQLException {
//                if(resultSet.next()){
//                    int id=resultSet.getInt("id");
//                    String name=resultSet.getString("name");
//                    String email=resultSet.getString("email");
//                    Date birth=resultSet.getDate("birth");
//                    return new Customers(id,name,email,birth);
//                }
//                return null;
//            };
//        };
        Customers cus=runner.query(conn,sql,handler,6);
        System.out.println(cus);
    }

4.资源的关闭

    public static void closeResource(Connection conn, PreparedStatement ps, ResultSet rs){
//        正常关闭需要处理异常
        try {
            DbUtils.close(conn);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
//        这种异常默认自己处理了
        DbUtils.closeQuietly(ps);
        DbUtils.closeQuietly(rs);
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值