• 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+"	");
                }
                System.out.println("	");
            }
        }
        //把对象一个对象存进去然后获取对象的每一条数据,常用
    
        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+"	");
            }
        }
        //查询具体的哪个字段数据
        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+"	"+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+"	"+m.get(str));    
    10             }
    11         }
    12     }
  • 相关阅读:
    Linq 中的Select事例
    C#关于事件的几个好例子
    C#运用实例.读取csv里面的词条,对每一个词条抓取百度百科相关资料,然后存取到数据库
    cookie 和 session 基本使用 以及 封装
    javascript 兼容各个浏览器的事件
    jquery选择器从认识到使用初级篇
    作业八—Alpha阶段项目总结
    第十四次
    第十三次
    十二次
  • 原文地址:https://www.cnblogs.com/wangrongchen/p/9303502.html
Copyright © 2020-2023  润新知