JAVA DBUTils和连接池

DBUTils是JDBC的简化开发工具

 

Dbutils三个核心功能介绍

QueryRunner中提供对sql语句操作的API.

ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

方法:

 

update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

 

先连接数据库连接池

 

 1 package com.oracle.demo01;
 2 
 3 import javax.sql.DataSource;
 4 
 5 import org.apache.commons.dbcp.BasicDataSource;
 6 
 7 public class DBUTils {
 8         public static final String DRIVER = "com.mysql.jdbc.Driver";
 9         public static final String URL = "jdbc:mysql://localhost:3306/goods?characterEncoding=utf-8";
10         public static final String USERNAME = "root";
11         public static final String PASSWORD = "1";
12         /*
13          * 创建连接池BasicDataSource
14          */
15         public static BasicDataSource dataSource = new BasicDataSource();
16         //静态代码块
17         static {
18             //对连接池对象 进行基本的配置
19             dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
20             dataSource.setUrl(URL); //指定要连接的数据库地址
21             dataSource.setUsername(USERNAME); //指定要连接数据的用户名
22             dataSource.setPassword(PASSWORD); //指定要连接数据的密码
23         }
24         /*
25          * 返回连接池对象
26          */
27         public static DataSource getDataSource(){
28             return dataSource;
29         }
30     }
31     

 

 1     //添加
 2     public static void insert() throws SQLException{
 3         //获取一个执行sql语句的对象
 4         QueryRunner qr = new    QueryRunner(DBUTils.getDataSource());
 5         //sql语句
 6         String sql = "insert into user(uid,username,password) values(?,?,?)";
 7         //把要添加的数据写到obj数组里去,此处写可以传值
 8         Object[] obj = {17,"wrc","123"};
 9         //接收结果
10         int count = qr.update(sql,obj);
11         System.out.println(count);
12     }
 1     //修改
 2     public static void insert() throws SQLException{
 3         //获取一个执行sql语句的对象
 4         QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
 5         //sql语句
 6         String sql = "update user set username=? where uid='17'";
 7         //把要添加的数据写到obj数组里去,此处写可以传值
 8         Object[] obj = {"wang"};
 9         //接收结果
10         int count = qr.update(sql,obj);
11         System.out.println(count);
12     }

QueryRunner实现查询操作

 存一条数据的都是ArrayHandler了,加了List就是存一个集合。存对象用BeanListHandler

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集合

 

 1 //封装查询的第一条数据
 2     public static void insert() throws SQLException{
 3         //获取一个执行sql语句的对象
 4         QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
 5         //sql语句
 6         String sql = "select * from user";
 7         //把查询的数据返回一个数组
 8         Object[] obj = qr.query(sql, new ArrayHandler());
 9         //遍历
10         for(Object o:obj){
11             System.out.println(o);
12         }
13     }
    //查询每一条数据都存进去
    public static void insert() throws SQLException{
        //获取一个执行sql语句的对象
        QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
        //sql语句
        String sql = "select * from user";
        //把查询的数据返回一个数组
        List<Object[]> obj = qr.query(sql,new ArrayListHandler());
        //遍历
        for(Object[] o:obj){
            for(Object i:o){
                System.out.println(i+"\t");
            }
            System.out.println("\t");
        }
    }
    //把对象一个对象存进去然后获取对象的每一条数据,常用

    public static void insert() throws SQLException{
        //获取一个执行sql语句的对象
        QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
        //sql语句
        String sql = "select * from user";
        //把对象存进去
        List<Sort> sork = qr.query(sql, new BeanListHandler<Sort>(Sort.class));
        //遍历对象
        for(Sort o:sork){
            System.out.println(o+"\t");
        }
    }
    //查询具体的哪个字段数据
    public static void find5() throws SQLException{
        QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
        String sql ="select * from sort";
        List<String> list = qr.query( sql, new ColumnListHandler<>("sname"));
        for(String arr:list){
            System.out.println(arr);
        }
    }
 1 //获得第一条数据用键值对的形式
 2     public static void find7() throws SQLException{
 3         QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
 4         String sql ="select * from sort";
 5         //第一条数据
 6         Map<String,Object> map = qr.query( sql,new MapHandler());
 7         //遍历
 8         for(String key:map.keySet()){
 9             System.out.println(key+"\t"+map.get(key));
10         }
11     }
 1     //以键值对的形式存数据
 2     public static void find8() throws SQLException{
 3         QueryRunner qr = new QueryRunner(DBUTils.getDataSource());
 4         String sql ="select * from sort";
 5         List<Map<String,Object>> map = qr.query(sql,new MapListHandler());
 6         //先遍历map,再遍历string
 7         for(Map<String,Object> m:map){
 8             for(String str:m.keySet()){
 9                 System.out.println(str+"\t"+m.get(str));    
10             }
11         }
12     }

 

posted @ 2018-07-13 15:07  鲁系大厨  阅读(495)  评论(0编辑  收藏  举报