DBUtils工具类学习一

匿名 (未验证) 提交于 2019-12-02 21:40:25

Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能

DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
2.对于数据表的写操作,也变得很简单(只需写sql语句)
3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。

QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护了连接Connection
update(String sql, Object...params),执行更新数据
query(String sql,ResultSetHandler rsh,Object... params),执行查询

ArrayHandler:将结果集中的第一条记录封装到Object[]数组中,数组中的每一个元素即使这条记录中的每一个字段的值
ArrayListHandler:将结果集中的每一条记录封装到Object[]数组中,将这些数组再封装到List集合中
BeanHandler:将结果集中的第一条记录封装到一个指定的javabean中
BeanListHandler:将结果集中每一条记录封装到javabean中,将这些javabean再封装到List集合中
ColumnListHandler:将结果集中指定列的字段值封装到一个List集合中
KeyedHandler:将结果集中的每一条记录封装到Map<String,Object>,再讲这个map集合作为另一个Map的value,另一个Map集合的key是指定的字段的值
MapHandler:将结果集中的第一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段的值
MapListHandler:将结果集中的每一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段的值,再将这些Map封装到List集合中
ScalarHandler:它是用于单数据,列如:select count(1) from 表操作

closeQuietly(Connetion conn)关闭连接,有异常就会抛出
commitAndCloseQuietly(Connetion conn):提交并关闭连接
rollbackAndCloseQuietly(Connetion conn):回滚并关闭连接

3.1maven依赖

<dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.1.44</version>         </dependency>         <dependency>             <groupId>com.mchange</groupId>             <artifactId>c3p0</artifactId>             <version>0.9.5</version>         </dependency>         <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->         <dependency>             <groupId>commons-dbutils</groupId>             <artifactId>commons-dbutils</artifactId>             <version>1.7</version>         </dependency>

3.2QueryDbUtils代码

package com.rookie.bigdata.dbutils;  import com.rookie.bigdata.domain.User; import com.rookie.bigdata.util.C3P0Utils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler;  import java.sql.SQLException; import java.util.List;  /**  * Created by dell on 2019/5/24.  */ public class QueryDbUtils {      public static void main(String[] args) {         //insertMethod();         //updateMethod();         //deleteMethod();         //selectAllUserMethod();         //selectUserMethod();         try {             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             String sql = "select count(*) from user ";            Long count=(Long)qr.query(sql, new ScalarHandler());             System.out.println(count);         } catch (Exception e) {             e.printStackTrace();         }      }      //查询单个用户方法     private static void selectUserMethod() {         try {             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             String sql = "select * from user where username=?";             Object[] params = {"李四"};             User user = qr.query(sql, new BeanHandler<User>(User.class), params);              System.out.println(user);         } catch (Exception e) {             e.printStackTrace();         }     }      //查询所有的用户信息     private static void selectAllUserMethod() {         try {             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             String sql = "select * from user";             List<User> userList = qr.query(sql, new BeanListHandler<User>(User.class));              for (User user : userList) {                 System.out.println(user);             }         } catch (Exception e) {             e.printStackTrace();         }     }      //删除操作     private static void deleteMethod() {         try {             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             String sql = "delete from user where username=?";             Object[] params = {"李四"};             int update = qr.update(sql, params);             System.out.println("删除了" + update + "记录");         } catch (Exception e) {             e.printStackTrace();         }     }      //更新记录操作     private static void updateMethod() {         try {             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             String sql = "update user set password=? where username=?";             Object[] params = {"654321", "李四"};             int update = qr.update(sql, params);             System.out.println("更新了" + update + "记录");         } catch (Exception e) {             e.printStackTrace();         }     }      /**      * 查询操作      */     private static void insertMethod() {         try {             // 1.创建核心类QueryRunner             QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());             // 2.编写SQL语句             String sql = "insert into user values(?,?)";             // 3.为站位符设置值             Object[] params = {"李四", "123456"};             // 4.执行添加操作             int rows = qr.update(sql, params);             System.out.println("添加成功!" + rows);         } catch (SQLException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }     } } 

C3P0Utils.java

package com.rookie.bigdata.util;  import com.mchange.v2.c3p0.ComboPooledDataSource;  import javax.sql.DataSource; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;  /**  * Created by dell on 2019/5/23.  */ public class C3P0Utils {     private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql");      public static DataSource getDataSource() {         return dataSource;     }      public static Connection getConnection() {         try {             return dataSource.getConnection();         } catch (SQLException e) {             throw new RuntimeException(e);         }     }      //释放连接回连接池     public static void close(Connection conn, PreparedStatement pst, ResultSet rs) {         if (rs != null) {             try {                 rs.close();             } catch (SQLException e) {                 e.printStackTrace();             }         }         if (pst != null) {             try {                 pst.close();             } catch (SQLException e) {                 e.printStackTrace();             }         }          if (conn != null) {             try {                 conn.close();             } catch (SQLException e) {                 e.printStackTrace();             }         }     } } 

User.java

package com.rookie.bigdata.domain;  /**  * Created by dell on 2019/5/25.  */ public class User {     private String username;     private String password;      public String getUsername() {         return username;     }      public void setUsername(String username) {         this.username = username;     }      public String getPassword() {         return password;     }      public void setPassword(String password) {         this.password = password;     }      @Override     public String toString() {         return "User{" +                 "username='" + username + '\'' +                 ", password='" + password + '\'' +                 '}';     } } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!