apache DBUtils 사용 예 demo

10652 단어 자바
apache DBUtils 는 자바 프로 그래 밍 의 데이터베이스 조작 실 용적 인 도구 로 작고 간단 하 며 실 용적 입 니 다.
1.데이터 시트 의 읽 기 동작 에 대해 그 는 결 과 를 List,Array,Set 등 자바 집합 으로 바 꾸 어 프로그래머 가 조작 하기에 편리 하 다.
2.데이터 시트 작성 작업 도 간단 해 집 니 다.(sql 문 구 를 쓰기 만 하면 됩 니 다)
3.데이터 소스,JNDI,데이터베이스 연결 풀 등 기술 을 사용 하여 성능 을 최적화 할 수 있 습 니 다.phop,asp 처럼 시간 이 걸 리 지 않 고 반복 적 으로 구축 하고 분석 하 는 대상 을 재 활용 할 수 있 습 니 다.
DBUtils 는 세 개의 가방 을 포함 합 니 다.
org.apache.commons.dbutils
org.apache.commons.dbutils.handlers
org.apache.commons.dbutils.wrappers
DBUtils 는 코드 를 적 게 쓸 수 있 도록 JDBC 에 대한 조작 을 봉인 하고 JDBC 조작 을 간소화 했다.
org.apache.commons.dbutils
DbUtils 링크 닫 기 등의 동작
Query Runner 에서 조회 하 는 동작
org.apache.commons.dbutils.handlers
Array Handler:ResultSet 의 첫 줄 데 이 터 를 대상 배열 로 변환 합 니 다.
Array ListHandler 는 ResultSet 의 모든 데 이 터 를 List 로 바 꾸 고 List 에 저 장 된 것 은 Object[]입 니 다.
BeanHandler:ResultSet 의 첫 줄 데 이 터 를 클래스 대상 으로 변환 합 니 다.
BeanListHandler:ResultSet 의 모든 데 이 터 를 List 로 변환 합 니 다.List 에 저 장 된 것 은 클래스 대상 입 니 다.
ColumnListHandler:ResultSet 의 한 열 에 있 는 데 이 터 를 List 로 저장 합 니 다.List 에 저 장 된 것 은 Object 대상 입 니 다.
Keyed Handler:ResultSet 에 맵 으로 저장 하고 key 는 특정한 열 에 맵 으로 대응 합 니 다.맵 에 저 장 된 것 은 데이터 입 니 다.
MapHandler:ResultSet 의 첫 줄 데 이 터 를 Map 맵 으로 저장 합 니 다.
MapListHandler:ResultSet 의 모든 데 이 터 를 List 로 저장 합 니 다.List 에 저 장 된 것 은 Map 입 니 다.
ScalarHandler:ResultSet 에 기 록 된 열 에 있 는 데 이 터 를 Object 로 저장 합 니 다.
org.apache.commons.dbutils.wrappers
SqlNullChecked ResultSet:ResultSet 을 조작 하여 값 을 변경 합 니 다.
StringTrimmed ResultSet:ResultSet 의 가운데 필드 의 좌우 빈 칸 을 제거 합 니 다.Trim()
주요 방법:
DbUtils 클래스:시작 클래스
ResultSetHandler 인터페이스:변환 형식 인터페이스
MapListHandler 클래스:실현 클래스,기록 을 List 로 변환
BeanListHandler 클래스:구현 클래스,기록 을 List 로 변환 하여 JavaBean 형식의 대상 으로 기록 합 니 다.
Qrery Runner 클래스:SQL 문 구 를 실행 하 는 클래스
http://commons.apache.org/proper/commons-dbutils/
Queryrunner.query    —————selection 문장 만 실행 할 수 있 습 니 다.
Queryrunner.update  —————update,delte,insert 문장 만 받 을 수 있 습 니 다.
BeanHandler          ——————빈 을 되 돌려 주 고 빈 으로 봉 했다.첫 줄 만 조회 합 니 다.id 에 따라 유일한 줄 을 조회 하기에 적합 합 니 다.
BeanListHandler     ——————List 의 모든 줄 을 되 돌려 주 고 List 에 봉 하여 여러 결 과 를 조회 하 는 데 적합 합 니 다.
MapHandler           ——————Bean Handler 와 대응 하여 첫 줄 만 되 돌려 주 고 Map 형식 으로 봉 인 됩 니 다.결과 집합 을 조회 하 는 데 도 적합 합 니 다.    관련 조회 에 적합 하고 일치 하 는 Bean 이 없습니다.
MapListHandler      ——————BeanListHandler 와 대응 하여 모든 것 을 되 돌려 주 고 List 형식 으로 봉 인 됩 니 다.
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.class));       
        String sql="SELECT * FROM "+tableName+" where id =? ";
        User u=runner.query(sql, new BeanHandler(User.class),"2");
        System.out.println(u);
    }
	@Test
    public void Query5() throws Exception
    {
        String sql="select * from "+tableName;
        List list= runner.query(sql, new BeanListHandler(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 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> 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 users=new ArrayList();
	     users.add(new User());
		 runner.batch(sql, users.toArray());
		 Query5();*/	
	}
	@Test
	public void custom() throws SQLException
	{
		ResultSetHandler h = new ResultSetHandler() {
		    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

	4.0.0
	com.jiepu
	testdbutil
	0.0.1-SNAPSHOT
	jar
	testdbutil
	http://maven.apache.org
	
		UTF-8
	
	
		
			junit
			junit
			4.8.1
		
		
			commons-dbutils
			commons-dbutils
			1.6
		
		
			org.xerial
			sqlite-jdbc
			3.8.7
		
	

좋은 웹페이지 즐겨찾기