BdUtil组件

2017-02-26  本文已影响0人  陈洲
//DbUtil组件*****************************************************************

        //核心类
        QueryRunner qr = new QueryRunner();
        QueryRunner qr = new QueryRunner(dataSource);
            /*
                传dataSource与不传的区别:
                如果用无参的方法构造qr,那么在qr调用其所有方法时,必须要传入Connection对象(以下都是)
                如果有参,则调用方法不需要Connection对象

            */

        //查询语句

        //ResultSetHandler<T> 是用来设置返回类型的
        <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params);
                
                //例如转为自定义User类型:
                User user = qr.query(conn,sql,new ResultSetHandler<User>(){

                    //重写handle方法,rs为查询结果,该方法返回值即query返回值
                    public User handle(ResuleSet rs){

                        User user = new User();
                        user.setId(rs.getInt("id"));
                        user.setName(rs.getString("name"));
                        return user;
                    }

                },params);

        //用BeanHandler更为简单的实现方法:
        User user = qr.query(conn,sql,new BeanHandler<User>(User.class),params);

        //如果要返回一个JavaBean的List
        List<User> userList = qr.query(conn,sql,new BeanListHandler<User>(User.class),params);

        //返回结果的第一行,把第一行的每个属性转成一个对象,如{obj[0]=chenzhou,obj[1]=23,obj[2]=313980};
        Object[] obj = qr.query(conn,sql,new ArrayHandler(),params);

        //把返回的所有行都按如上形式转成obj[];
        List<Object[]> list = qr.query(conn,sql,new ArrayListHandler(),params);

        //返回结果的第一行第一列的值,一般用于count(*)查询,用Long类型
        <T>T qr.query(conn,sql,new ScalarHandler<T>(),params);

        //把返回的第一条记录封装成map,如{<name,chenzhou>,<id,313980>}
        Map<String,Object> map = qr.query(conn,sql,new MapHandler(),params);

        //更新语句

        //执行带一个参数的sql,返回修改行数
        int count = qr.update(conn,sql,params);

        //执行带多个参数的sql
        int count = qr.update(conn,sql,params1,params2);

        //执行批处理
        Object[][] params;
        int[] count = qr.batch(conn,sql,params);
上一篇下一篇

猜你喜欢

热点阅读