zoukankan      html  css  js  c++  java
  • apache DBUtils 使用例子demo

    转自:http://blog.csdn.net/earbao/article/details/44901061
    apache DBUtils是java编程中的数据库操作实用工具,小巧简单实用,
    1.对于数据表的读操作,他可以把结果转换成List,Array,Set等java集合,便于程序员操作;
    2.对于数据表的写操作,也变得很简单(只需写sql语句)
    3.可以使用数据源,使用JNDI,数据库连接池等技术来优化性能--重用已经构建好的数据库连接对象,而不像php,asp那样,费时费力的不断重复的构建和析构这样的对象。
    DBUtils包括3个包:
    org.apache.commons.dbutils
    org.apache.commons.dbutils.handlers
    org.apache.commons.dbutils.wrappers
    DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
    org.apache.commons.dbutils
    DbUtils 关闭链接等操作
    QueryRunner 进行查询的操作
    org.apache.commons.dbutils.handlers
    ArrayHandler :将ResultSet中第一行的数据转化成对象数组
    ArrayListHandler将ResultSet中所有的数据转化成List,List中存放的是Object[]
    BeanHandler :将ResultSet中第一行的数据转化成类对象
    BeanListHandler :将ResultSet中所有的数据转化成List,List中存放的是类对象
    ColumnListHandler :将ResultSet中某一列的数据存成List,List中存放的是Object对象
    KeyedHandler :将ResultSet中存成映射,key为某一列对应为Map。Map中存放的是数据
    MapHandler :将ResultSet中第一行的数据存成Map映射
    MapListHandler :将ResultSet中所有的数据存成List。List中存放的是Map
    ScalarHandler :将ResultSet中一条记录的其中某一列的数据存成Object
    org.apache.commons.dbutils.wrappers
    SqlNullCheckedResultSet :对ResultSet进行操作,改版里面的值
    StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
    主要方法:
    DbUtils类:启动类
    ResultSetHandler接口:转换类型接口
    MapListHandler类:实现类,把记录转化成List
    BeanListHandler类:实现类,把记录转化成List,使记录为JavaBean类型的对象
    Qrery Runner类:执行SQL语句的类
    Queryrunner.query    —————只可以执行select语句。
    Queryrunner.update  —————只可以接收update,delte,insert语句
    BeanHandler          ——————返回一个 Bean,结果封装到Bean。只查询第一行。适合根据id查询唯一的一行
    BeanListHandler     ——————返回List<Bean>所有行,都封装到List,适合于查询多个结果
    MapHandler           ——————与BeanHandler应,只返回第一行,封装成Map类型 - 也适合于查询一个结果集的    适合于关联查询,且没有匹配的Bean。
    MapListHandler      ——————与BeanListHandler对应,返回所有,封装成List<Map>类型

    ScalarHandler        ——————标量- 用于select count(1)|sum|avg|max …一些聚合函数

     

    1. package com.jiepu.testdbutil;  
    2.   
    3. import java.sql.ResultSet;  
    4. import java.sql.ResultSetMetaData;  
    5. import java.sql.SQLException;  
    6. import java.sql.Statement;  
    7. import java.util.Date;  
    8. import java.util.List;  
    9. import java.util.Map;  
    10.   
    11. import org.apache.commons.dbutils.QueryRunner;  
    12. import org.apache.commons.dbutils.ResultSetHandler;  
    13. import org.apache.commons.dbutils.handlers.BeanHandler;  
    14. import org.apache.commons.dbutils.handlers.BeanListHandler;  
    15. import org.apache.commons.dbutils.handlers.MapHandler;  
    16. import org.apache.commons.dbutils.handlers.MapListHandler;  
    17. import org.apache.commons.dbutils.handlers.ScalarHandler;  
    18. import org.junit.AfterClass;  
    19. import org.junit.BeforeClass;  
    20. import org.junit.Test;  
    21. import org.sqlite.SQLiteDataSource;  
    22. //http://www.cnblogs.com/liuwt365/p/4111584.html  
    23. public class TestDBUtils {  
    24.     private static SQLiteDataSource dataSource;  
    25.     private static QueryRunner runner;  
    26.     private static String tableName="User";  
    27.       
    28.     @BeforeClass  
    29.     public static  void setUpBeforeClass() throws Exception {  
    30.           
    31.         dataSource= new SQLiteDataSource();  
    32.         dataSource.setUrl("jdbc:sqlite:testdbutil.db");  
    33.         runner=new QueryRunner(dataSource);  
    34.         execute("CREATE TABLE IF NOT EXISTS "+tableName+"(id integer primary key autoincrement, name varchar(50),password varchar(50)," +  
    35.                 "age integer,createdate integer)",dataSource);  
    36.           
    37.     }  
    38.     public static int execute(String sql ,SQLiteDataSource dataSource){  
    39.         Statement statement;  
    40.         int result =0;  
    41.         try {  
    42.             statement = dataSource.getConnection().createStatement();  
    43.             result= statement.executeUpdate(sql);  
    44.         } catch (SQLException e) {  
    45.             e.printStackTrace();  
    46.         }  
    47.       
    48.         return result;  
    49.     }  
    50.       
    51.     @Test  
    52.     public void Query1() throws Exception  
    53.     {  
    54.     
    55.         //String sql="INSERT INTO users VALUES ('U002','tom','4321' )";  
    56.         //runner.update(sql);  
    57.         String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)";  
    58.         runner.update(sql,"Jim","123456","24",new Date().getTime());  
    59.         runner.update(sql,"Kim","1234567","24",new Date().getTime());  
    60.         runner.update(sql,"北京","12345678","24",new Date().getTime());  
    61.         runner.update(sql,"嘉兴","123456789","24",new Date().getTime());  
    62.         runner.update(sql,"tom","123456789","24",new Date().getTime());  
    63.         System.out.println(dataSource);  
    64.     }  
    65.     @Test  
    66.     public void Query2() throws Exception  
    67.     {  
    68.         //String sql=" UPDATE users SET NAME='Kim' WHERE NAME='jim' ";  
    69.         //runner.update(sql);  
    70.         String sql=" UPDATE "+tableName+" SET name=? WHERE name=? ";  
    71.         runner.update(sql,"lily","Kim");  
    72.         Query5();  
    73.     }  
    74.     @Test  
    75.     public void Query3() throws Exception  
    76.     {  
    77.         //String sql="DELETE FROM users WHERE NAME='lily' ";  
    78.         //runner.update(sql);  
    79.         String sql="DELETE FROM "+tableName+" WHERE name=? ";  
    80.         runner.update(sql,"tom");  
    81.         Query5();  
    82.     }  
    83.       
    84.     @Test  
    85.     public void Query4() throws Exception  
    86.     {  
    87.         //String sql="SELECT * FROM users where id ='U002' ";  
    88.         //user u= runner.query(sql, new  BeanHandler<user>(user.class));         
    89.         String sql="SELECT * FROM "+tableName+" where id =? ";  
    90.         User u=runner.query(sql, new BeanHandler<User>(User.class),"2");  
    91.         System.out.println(u);  
    92.     }  
    93.     @Test  
    94.     public void Query5() throws Exception  
    95.     {  
    96.         String sql="select * from "+tableName;  
    97.         List<User> list= runner.query(sql, new BeanListHandler<User>(User.class));  
    98.         for(User u:list)  
    99.         {  
    100.             System.out.println(u);  
    101.         }  
    102.     }  
    103.     @Test  
    104.     public void Query6() throws Exception  
    105.     {  
    106.         String sql="select id,name,password from "+tableName;  
    107.         Map<String, Object> map= runner.query(sql, new MapHandler());  
    108.         System.out.println(map.toString());  
    109.     }  
    110.     @Test  
    111.     public void Query7() throws Exception  
    112.     {  
    113.         String sql="select id,name,password from "+tableName;  
    114.         List<Map<String , Object>> list= runner.query(sql, new MapListHandler());  
    115.         System.out.println(list);  
    116.     }  
    117.     @Test  
    118.     public void Query8() throws Exception  
    119.     {  
    120.         String sql="select count(*) from "+tableName;  
    121.         Object obj=runner.query(sql, new ScalarHandler());  
    122.         int i=Integer.valueOf(obj.toString());  
    123.         System.out.println(i);  
    124.     }  
    125.     @Test  
    126.     public void batch()  
    127.     {  
    128.          /**String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)"; 
    129.          List<User> users=new ArrayList<User>(); 
    130.          users.add(new User()); 
    131.          runner.batch(sql, users.toArray()); 
    132.          Query5();*/      
    133.     }  
    134.     @Test  
    135.     public void custom() throws SQLException  
    136.     {  
    137.         ResultSetHandler<User[]> h = new ResultSetHandler<User[]>() {  
    138.             public User[] handle(ResultSet rs) throws SQLException {  
    139.                 if (!rs.next()) {  
    140.                     return null;  
    141.                 }  
    142.               
    143.                 ResultSetMetaData meta = rs.getMetaData();  
    144.                 int cols = meta.getColumnCount();  
    145.                 User[] result = new User[cols];  
    146.                   
    147.                 for (int i = 0; i < cols; i++) {       
    148.                     User user=new User();  
    149.                     user.setId(rs.getInt(1));  
    150.                     user.setName(rs.getString(2));  
    151.                     user.setPassword(rs.getString(3));  
    152.                     user.setAge(rs.getLong(4));  
    153.                     user.setCreatedate(rs.getLong(5));                
    154.                     result[i]=user;  
    155.                     rs.next();  
    156.                       
    157.                 }  
    158.   
    159.                 return result;  
    160.             }  
    161.         };  
    162.           
    163.         User[] result = runner.query("SELECT * FROM "+tableName+" WHERE age=?", h, "24");  
    164.         for (User user : result) {  
    165.             System.out.println(user);  
    166.         }  
    167.           
    168.           
    169.           
    170.     }  
    171.     //http://wenku.baidu.com/view/6d4bb27602768e9951e73849.html  
    172.     @AfterClass  
    173.     public static void setUpAfterclass()  
    174.     {  
    175.         dataSource=null;  
    176.         runner=null;  
    177.     }  
    178.   
    179. }  
    1. package com.jiepu.testdbutil;  
    2. public class User {  
    3.     //使用dbutil 实体类成员不要使用基本类型int long 应该使用封装类型 Integer Long  
    4.     private Integer id;   
    5.     private String name;      
    6.     private String password;  
    7.     private Long age;  
    8.     private Long createdate;      
    9.     public Integer getId() {  
    10.         return id;  
    11.     }  
    12.     public void setId(Integer id) {  
    13.         this.id = id;  
    14.     }  
    15.     public String getName() {  
    16.         return name;  
    17.     }  
    18.     public void setName(String name) {  
    19.         this.name = name;  
    20.     }  
    21.     public String getPassword() {  
    22.         return password;  
    23.     }  
    24.     public void setPassword(String password) {  
    25.         this.password = password;  
    26.     }  
    27.     public Long getAge() {  
    28.         return age;  
    29.     }  
    30.     public void setAge(Long age) {  
    31.         this.age = age;  
    32.     }  
    33.     public Long getCreatedate() {  
    34.         return createdate;  
    35.     }  
    36.     public void setCreatedate(Long createdate) {  
    37.         this.createdate = createdate;  
    38.     }  
    39.     @Override  
    40.     public String toString() {  
    41.         return "User [id=" + id + ", name=" + name + ", password=" + password  
    42.                 + ", age=" + age + ", createdate=" + createdate + "]";  
    43.     }  
    44. }  
    maven pom.xml
    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    3.     <modelVersion>4.0.0</modelVersion>  
    4.     <groupId>com.jiepu</groupId>  
    5.     <artifactId>testdbutil</artifactId>  
    6.     <version>0.0.1-SNAPSHOT</version>  
    7.     <packaging>jar</packaging>  
    8.     <name>testdbutil</name>  
    9.     <url>http://maven.apache.org</url>  
    10.     <properties>  
    11.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    12.     </properties>  
    13.     <dependencies>  
    14.         <dependency>  
    15.             <groupId>junit</groupId>  
    16.             <artifactId>junit</artifactId>  
    17.             <version>4.8.1</version>  
    18.         </dependency>  
    19.         <dependency>  
    20.             <groupId>commons-dbutils</groupId>  
    21.             <artifactId>commons-dbutils</artifactId>  
    22.             <version>1.6</version>  
    23.         </dependency>  
    24.         <dependency>  
    25.             <groupId>org.xerial</groupId>  
    26.             <artifactId>sqlite-jdbc</artifactId>  
    27.             <version>3.8.7</version>  
    28.         </dependency>  
    29.     </dependencies>  
    30. </project>  
  • 相关阅读:
    eclipse报错 : One or more constraints have not been satisfied.
    关于一个计算机同时装两个jdk对应两个eclipse
    开发测试类2
    工作中测试类1
    Spring 读取classpath下的文件存到map里面
    CentOS6下安装JDK并且部署tomcat容器
    ConOS安装mysql5.7 及简单配置
    用sqlyog迁移mysql数据库
    FindBugs缺陷库
    使用NumberPicker定制自己喜欢的Date&TimePicker
  • 原文地址:https://www.cnblogs.com/linbo3168/p/6670389.html
Copyright © 2011-2022 走看看