DBUtils简写操作数据库代码

/**QueryRunner类的方法3大类
         * 1,update(sql);update(Connection,sql)...
         * 2,query(sql,ResultSetHandler);query(Connection,sql,ResultSetHandler)...
         * 3,batch(sql,Object[][]);batch(Connection,Object[][])
         * 需要给连接的可以控制事务,不需要给连接的默认自动提交
         */
        //给一个数据源,有两种c3p0的数据源dbcp的数据源
        /**
         * c3p0数据源
         * new ComboPooledDataSource()默认回去src下找c3p0-config.xml文件
         * <c3p0-config>
                <default-config>
                    <property name="driverClass">com.mysql.jdbc.Driver</property>
                    <property name="jdbcUrl">jdbc:mysql://localhost:3306/bookstore</property>
                    <property name="user">root</property>
                    <property name="password">root</property>
                    <property name="automaticTestTable">con_test</property>
                    <property name="checkoutTimeout">30000</property>
            ...还要很多
         */
        QueryRunner qr = new QueryRunner(new ComboPooledDataSource());
        
                /**dbcp数据源
                 * db.properties
                 *     driverClassName=com.mysql.jdbc.Driver
                    url=jdbc:mysql://localhost:3306/bookstore
                    username=root
                    password=root
                 */
                Properties pfile = new Properties();
                pfile.load(new FileInputStream("db.properties"));//加载db.properties文件中的内容
                DataSource dDataSouce = BasicDataSourceFactory.createDataSource(pfile);//得到dataSource
                
        QueryRunner qr1 = new QueryRunner(dDataSouce);
        //执行更新语句
        //System.out.println(qr.update("insert user(username)values('cnd');"));
        //执行查询语句
        /***
         * 查询结果接收类ResultSetHandler(顶层接口) 把查询到的数据集放到不同的数据存贮结构中
         * BeanHandler将查询的一行数据封装到一个对象中返回。只查询一行数据
         * ArrayHandler将查询到的数据放到数组中,只返回一行,每个下标存储一列数据。
         * MapHandler将查询到数据放到Map集合中,只返回一行,key是列名value是列值
         * ScalarHandler返回一行一列(一个单元格)一般用于函数返回值,指定列或者列名查看
         * KeyedHandler将查询到数据放到Map<key1,Map<key2,value>>一个集合中,key1可以指定;返回所有数据。
         *                            Map<可以指定那一列,Map<列名,列值>>  mk1列值mv1一行数据mk2列名mv2列值
         * ArrayListHandler将查询到的一行数据放到数组中,在把数组放到list集合中,数组中每个下标存储一行的一列数据。list中每个元素存贮一行数据
         * ColumnListHandler指定查询某一列的全部数据。封装到list集合中
         * BeanListHandler将查询的一行数据封装到一个对象中返回。查询所有数据,在将对象(一行数据)放到list集合中
         * MapListHandler将查询到数据放到Map集合中,key是列名value是列值,再讲map放到list集合中
         */
    //    Object user = qr.query("select * from user;", new ScalarHandler());
//        List<User> user = qr.query("select * from user;", new BeanListHandler<User>(User.class));
//        Object[] user = qr.query("select * from user;", new ArrayHandler());
    /*    Map<String,Object> user = qr.query("select * from user;", new MapHandler());
        for (Entry<String, Object> en: user.entrySet()) {
            System.out.println(en.getKey()+" : "+en.getValue());
        }*/
        
        //Object user = qr.query("select * from user;", new KeyedHandler(2));
        // List<Object[]> query = qr.query("select * from user;", new ArrayListHandler());
        /* for (Object ob : query) {
            System.out.println(ob);
        }*/
        /* List<User> q = qr.query("select * from user;", new BeanListHandler<User>(User.class));
         for (User ob : q) {
            System.out.println(ob.getUsername());
        }*/
//         List<Map<String,Object>> q = qr.query("select * from user;", new MapListHandler());
//         for (Map<String,Object> mp: q) {
//             System.out.println("------");
//            for (Entry<String,Object> en :mp.entrySet()) {
//                System.out.println(en.getKey()+" : "+en.getValue());
//            }
//        }
         Object q = qr1.query("select * from user;", new ScalarHandler("username"));
         System.out.println(q);
        

猜你喜欢

转载自www.cnblogs.com/xiaobaiyize/p/9504750.html