DBUtils工具类

DBUtils=jdbc+反射+基于datasouce。
DBUtils工具类_第1张图片

ResultSetHandler结果集处理类

ArrayHandler 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值
ArrayListHandler 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。
BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。
BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中
ColumnListHandler 将结果集中指定的列的字段值,封装到一个List集合中
ScalarHandler 它是用于单数据。例如select count(*) from 表操作。
MapHandler 将结果集第一行封装到Map集合中,Key 列名, Value 该列数据
MapListHandler 将结果集封装到Map集合中,Key 列名, Value 该列数据,Map集合存储到List集合

QueryRunner常用方法

update(Connection conn, String sql, Object… params) ,用来完成表数据的增加、删除、更新操作
query(Connection conn, String sql, ResultSetHandler rsh, Object… params) ,用来完成表数据的查询操作

方法使用

student.java:

public class Student {

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private int sid;
    private String sname;
    private int age;

    public Student() {
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", age=" + age +
                '}';
    }
}

方式使用:

public class TestCommonDBUtil {
    private static DataSource dataSource;
    private static QueryRunner runner;
    static{
        try {
            Properties prop = new Properties();
            prop.load(TestCommonDBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
            //1.初始化数据库连接池(数据源)对象
            dataSource =
                    DruidDataSourceFactory.createDataSource(prop);
            //2 创建QuerryRunner对象
            runner = new QueryRunner(dataSource);
            System.out.println(runner);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //将查询的记录,通过反射直接生成对象
    private static void 查询1_单个对象查询() throws SQLException {
        String sql = "select * from student where sid=?";
        Student stu = runner.query(sql,new BeanHandler<Student>(Student.class),1);
        System.out.println(stu);
    }
    private static void 查询2_多对象查询_返回集合() throws SQLException {
        String sql = "select * from student";
        List<Student> list = runner.query(sql,new BeanListHandler<Student>(Student.class));
        list.stream().forEach(System.out::println);
    }
    private static void 查询3_指定字段的精确查询() throws SQLException {
        String sql = "select sname,age,sid from student where sid=?";
        //只返回结果集的第1条记录。
        Map<String,Object> result = runner.query(sql,new MapHandler(),2);
        System.out.println(result);
    }
    private static void 查询4_指定字段的模糊查询() throws SQLException {
        String sql = "select sname,age,sid from student wherthrows SQLExceptione sid>?";
        //返回各个结果集构成的map数组。
        List<Map<String,Object>>result = runner.query(sql,new MapListHandler(),2);
        result.stream().forEach(System.out::println);
    }
    private static void 查询5_聚合查询()throws SQLException{
        String sql = "select count(1) from student";
        long count = runner.query(sql,new ScalarHandler<>());
        System.out.println("记录条数 :"+count);
    }

    private static void 添加() throws SQLException{
        String sql = "insert into student (sname,age) values(?,?)";
        int count = runner.update(sql,"老白2000",2000);
        System.out.println("添加结果:"+(count==1));
    }

    private static void 修改() throws SQLException{
        String sql = "update  student set sname=?,age=? where sid=?";
        int count = runner.update(sql,"老白2000",2000,1);
        System.out.println("修改结果:"+(count==1));
    }
    public static void main(String[] args) throws SQLException{
        //查询1_单个对象查询();
        查询2_多对象查询_返回集合();
        //查询3_指定字段的精确查询();
        //查询4_指定字段的模糊查询();
        //查询5_聚合查询();
        //添加();
        //修改();
    }
}

你可能感兴趣的:(java,web)