1. 程式人生 > 其它 >014-jdbc-mysql-dbutils的使用

014-jdbc-mysql-dbutils的使用

技術標籤:Java基礎學習

1. 新建一個名叫dbutils的java專案, 使用c3p0的配置

2. 新增dbutils的相關jar

3. 使用c3p0的JDBCUtil.java

package com.lywgames.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 使用資料庫連線池的獲取的資料庫連線, 我們不用做關閉操作, 資料庫連線池自行管理
 */
public class JDBCUtil {
	private static DataSource dataSource = null;

	static {
		dataSource = new ComboPooledDataSource();
	}
	
	public static DataSource getDataSource() {
		return dataSource;
	}
	
	/**
	 * 獲取連線物件
	 */
	public static Connection getConn(){
		try {
			return dataSource.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 釋放資源
	 * @param st
	 * @param rs
	 */
	public static void release(Statement st, ResultSet rs){
		closeRs(rs);
		closeSt(st);
	}

	public static void release(Statement st){
		closeSt(st);
	}
	
	public static void closeRs(ResultSet rs){
		try {
			if(rs != null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			rs = null;
		}
	}
	
	public static void closeSt(Statement st){
		try {
			if(st != null){
				st.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			st = null;
		}
	}
	
}

4. 新建一個User.java實體類

package com.lywgames.bean;

import java.sql.Timestamp;

public class User {
	private int id;
	private String username;
	private String password;
	private Timestamp registertime;
	
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + ", registertime=" + registertime
				+ "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	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;
	}
	public Timestamp getRegistertime() {
		return registertime;
	}
	public void setRegistertime(Timestamp registertime) {
		this.registertime = registertime;
	}
}

5. 使用dbutils

package com.lywgames.myjdbc;

import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.lywgames.bean.User;
import com.lywgames.util.JDBCUtil;

/**
 * QueryRunner的update方法, 可以進行插入、刪除、更新操作
 * QueryRunner的query方法, 可以進行查詢操作
 */
public class MyJDBC {
	public static void main(String[] args) {
		try {
			QueryRunner queryRunner = new QueryRunner();
			User user = queryRunner.query(JDBCUtil.getConn(), "select * from user where id = ?", new BeanHandler<User>(User.class), 1002);
			System.out.println(user.toString());
		} catch (SQLException e) {
			e.printStackTrace();
		} 
	}
	
	public static void selectList() {
		try {
			QueryRunner queryRunner = new QueryRunner(JDBCUtil.getDataSource());
			List<User> list = queryRunner.query("select * from user", new BeanListHandler<User>(User.class));
			for (User user : list) {
				System.out.println(user.toString());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} 
	}
	
	public static void insert() {
		try {
			// 傳入資料庫連線池物件, QueryRunner不會建立連線
			QueryRunner queryRunner = new QueryRunner(JDBCUtil.getDataSource());
			queryRunner.update("insert into user values (null, ?, ?, ?)", "guanyu", "123456", new Timestamp(System.currentTimeMillis()));
		} catch (SQLException e) {
			e.printStackTrace();
		} 
	}
	
	public static void update() {
		try {
			QueryRunner queryRunner = new QueryRunner(JDBCUtil.getDataSource());
			queryRunner.update("update user set username = ? where id = ?", "zhangfei", 1000);
		} catch (SQLException e) {
			e.printStackTrace();
		} 
	}
	
	public static void delete() {
		try {
			QueryRunner queryRunner = new QueryRunner(JDBCUtil.getDataSource());
			queryRunner.update("delete from user where id = ?", 1001);
		} catch (SQLException e) {
			e.printStackTrace();
		} 
	}		
	
}