014-jdbc-mysql-dbutils的使用
阿新 • • 發佈:2021-01-31
技術標籤: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(); } } }