ScalarHandler ——————标量- 用于select count(1)|sum|avg|max …一些聚合函数
package com.jiepu.testdbutil; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.sqlite.SQLiteDataSource; //http://www.cnblogs.com/liuwt365/p/4111584.html public class TestDBUtils { private static SQLiteDataSource dataSource; private static QueryRunner runner; private static String tableName="User"; @BeforeClass public static void setUpBeforeClass() throws Exception { dataSource= new SQLiteDataSource(); dataSource.setUrl("jdbc:sqlite:testdbutil.db"); runner=new QueryRunner(dataSource); execute("CREATE TABLE IF NOT EXISTS "+tableName+"(id integer primary key autoincrement, name varchar(50),password varchar(50)," + "age integer,createdate integer)",dataSource); } public static int execute(String sql ,SQLiteDataSource dataSource){ Statement statement; int result =0; try { statement = dataSource.getConnection().createStatement(); result= statement.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } return result; } @Test public void Query1() throws Exception { //String sql="INSERT INTO users VALUES ('U002','tom','4321' )"; //runner.update(sql); String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)"; runner.update(sql,"Jim","123456","24",new Date().getTime()); runner.update(sql,"Kim","1234567","24",new Date().getTime()); runner.update(sql,"北京","12345678","24",new Date().getTime()); runner.update(sql,"嘉兴","123456789","24",new Date().getTime()); runner.update(sql,"tom","123456789","24",new Date().getTime()); System.out.println(dataSource); } @Test public void Query2() throws Exception { //String sql=" UPDATE users SET NAME='Kim' WHERE NAME='jim' "; //runner.update(sql); String sql=" UPDATE "+tableName+" SET name=? WHERE name=? "; runner.update(sql,"lily","Kim"); Query5(); } @Test public void Query3() throws Exception { //String sql="DELETE FROM users WHERE NAME='lily' "; //runner.update(sql); String sql="DELETE FROM "+tableName+" WHERE name=? "; runner.update(sql,"tom"); Query5(); } @Test public void Query4() throws Exception { //String sql="SELECT * FROM users where id ='U002' "; //user u= runner.query(sql, new BeanHandler<user>(user.class)); String sql="SELECT * FROM "+tableName+" where id =? "; User u=runner.query(sql, new BeanHandler<User>(User.class),"2"); System.out.println(u); } @Test public void Query5() throws Exception { String sql="select * from "+tableName; List<User> list= runner.query(sql, new BeanListHandler<User>(User.class)); for(User u:list) { System.out.println(u); } } @Test public void Query6() throws Exception { String sql="select id,name,password from "+tableName; Map<String, Object> map= runner.query(sql, new MapHandler()); System.out.println(map.toString()); } @Test public void Query7() throws Exception { String sql="select id,name,password from "+tableName; List<Map<String , Object>> list= runner.query(sql, new MapListHandler()); System.out.println(list); } @Test public void Query8() throws Exception { String sql="select count(*) from "+tableName; Object obj=runner.query(sql, new ScalarHandler()); int i=Integer.valueOf(obj.toString()); System.out.println(i); } @Test public void batch() { /**String sql="INSERT INTO "+tableName+"(name,password,age,createdate) VALUES (?,?,?,?)"; List<User> users=new ArrayList<User>(); users.add(new User()); runner.batch(sql, users.toArray()); Query5();*/ } @Test public void custom() throws SQLException { ResultSetHandler<User[]> h = new ResultSetHandler<User[]>() { public User[] handle(ResultSet rs) throws SQLException { if (!rs.next()) { return null; } ResultSetMetaData meta = rs.getMetaData(); int cols = meta.getColumnCount(); User[] result = new User[cols]; for (int i = 0; i < cols; i++) { User user=new User(); user.setId(rs.getInt(1)); user.setName(rs.getString(2)); user.setPassword(rs.getString(3)); user.setAge(rs.getLong(4)); user.setCreatedate(rs.getLong(5)); result[i]=user; rs.next(); } return result; } }; User[] result = runner.query("SELECT * FROM "+tableName+" WHERE age=?", h, "24"); for (User user : result) { System.out.println(user); } } //http://wenku.baidu.com/view/6d4bb27602768e9951e73849.html @AfterClass public static void setUpAfterclass() { dataSource=null; runner=null; } }
package com.jiepu.testdbutil; public class User { //使用dbutil 实体类成员不要使用基本类型int long 应该使用封装类型 Integer Long private Integer id; private String name; private String password; private Long age; private Long createdate; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Long getAge() { return age; } public void setAge(Long age) { this.age = age; } public Long getCreatedate() { return createdate; } public void setCreatedate(Long createdate) { this.createdate = createdate; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", password=" + password + ", age=" + age + ", createdate=" + createdate + "]"; } }maven pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jiepu</groupId> <artifactId>testdbutil</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>testdbutil</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> </dependency> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <version>3.8.7</version> </dependency> </dependencies> </project>