使用DBUtils来完成CRUD

1.首先我们需要一个Java Bean 来存储查询出来的结果

Java Bean 为一个类 在开发中常永来封装数据
1. 需要实现接口 : java.io.Serializable 通常会省略
2.需要有私有字段 : private
3.提供 get和set 方法
4.需要提供无参构造

2.DBUtils来完成CRUD
核心功能介绍:

QueryRunner中提供sql语句操作的
ResultSetHandler接口 用于定义select操作后 封装结果街
DbUtils类 一个工具类 定义了关闭资源与事务处理的方法

3.1 QueryRunner核心类
QueryRunner(DataSource ds) 提供数据源 DBUtils底层自动维护连接Connection
update(String sql,Object … params) 执行更新数据
query(String sql,ResultSetHandler rsh,Object … params) 执行查询
3.2 ResultSetHandler结果集处理类
BeanHandler 将结果集第一条记录封装到一个指定的javaBean中
BeanListHandler 将结果集所有记录封装到一个指定的javaBean中 再封装到List中
ScalarHandler 用于但数据 select count(*) from 表 操作

4.操作

* 插入操作*

@Test
    public void dem01() {
        try {

            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

            String sql = "insert into user values(?,?)";

            Object[] params = {"w2",22};

            int row = qr.update(sql, params);

            if(row>0) {
                System.out.println("成功");
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

删除操作

@Test
    public void dem01() {
        try {

            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

            String sql = "delete from user where name =?";

            Object[] params = {"w2"};

            int row = qr.update(sql, params);

            if(row>0) {
                System.out.println("成功");
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

注意查询的时候 字段名要相同 要对应起来 这个入坑了半个小时。。。

单条查询操作

Java Bean类 在这是User类

public class User implements Serializable{

    private String uname;
    private String upassword;
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUpassword() {
        return upassword;
    }
    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }


}`

查询

@Test
    public void dem01() {
        try {

            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

            String sql = "select * from user where uname = '123' ";
            Object[] params = {"w3","33"};
            User user = qr.query(sql, new BeanHandler<User>(User.class));
            System.out.println( user.getUname());
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

多条查询

@Test
    public void dem01() {
        try {

            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

            String sql = "select * from user ";
            ArrayList<User> user = (ArrayList<User>) qr.query(sql, new BeanListHandler<User>(User.class));
            for (User user2 : user) {
                System.out.println(user2.getUname()+" = "+user2.getUname());
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

总记录数

这里要用ScalarHandler()来存储数量 并且他的类型为Long类型要注意

@Test
    public void dem01() {
        try {

            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());

            String sql = "select count(*) from user ";

            Long num = (Long) qr.query(sql, new ScalarHandler());
            System.out.println(num);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值