apache DBUtils 使用例子demo
来源:互联网 发布:尚观java 编辑:程序博客网 时间:2024/05/17 07:42
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语句的类
http://commons.apache.org/proper/commons-dbutils/
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 …一些聚合函数
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.htmlpublic class TestDBUtils {private static SQLiteDataSource dataSource;private static QueryRunner runner;private static String tableName="User";@BeforeClasspublic 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); }@Testpublic 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();*/}@Testpublic 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@AfterClasspublic static void setUpAfterclass(){dataSource=null;runner=null;}}
package com.jiepu.testdbutil;public class User {//使用dbutil 实体类成员不要使用基本类型int long 应该使用封装类型 Integer Longprivate 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;}@Overridepublic 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>
0 0
- apache DBUtils 使用例子demo
- Jakarta DBUtils使用demo
- Apache DBUtils使用总结
- Apache dbutils使用示例
- Apache DBUtils使用总结
- Apache DBUtils使用总结
- Apache DBUtils使用总结
- Apache DBUtils使用总结
- Apache DBUtils使用总结
- Apache DBUtils使用总结
- apache--dbutils的使用
- Apache DBUtils使用总结
- Apache DbUtils使用
- Apache Commons DbUtils 使用
- apache dbutils 小例子一枚
- java : apache commons-dbutils QueryLoader 例子
- apache common-dbutils 的使用
- JDBC:Apache DBUtils的使用
- 【龙书笔记】用Python实现一个简单数学表达式从中缀到后缀语法的翻译器(采用递归下降分析法)
- hdu2089 初学数位dp
- Windows设备驱动程序StartIO、IRP同步/异步上机小结
- 一个简单的变换——图像的平滑处理
- 模板-计算几何
- apache DBUtils 使用例子demo
- 模板-数据结构
- hdu 2389 Rain on your Parade (二分图,Hopcroft-Karp)
- USACO——Friday the Thirteenth 黑色星期五
- 黑马程序员--java常用的四种排序
- 人最重要的能力是什么?
- 【Leetcode】Combination Sum II
- USACO——Broken Necklace 坏掉的项链
- Google推荐的图片加载库Glide介绍