一、連接mysql數據庫 1、啟動 MySQL
以管理員身份打開 cmd 命令行,輸入 net start mysql
2、MySQL 創建表
創建一張 user 表,有id、name、三個字段。
3、導入jar包
(1) 創建新項目,在項目下創建lib包,用于存放所需要的jar包
(2) 拷貝 mysql 驅動包mysql--j-8.0.31.jar 到 lib 目錄下。
右鍵jar包,點擊 添加為庫。
添加后 jar 包旁出現一個小三角,可以點開查看里面的內容,此時導入成功。
mysql 驅動 jar 包下載:
官網:
CSDN:mysql--j-8.0.31-Java文檔類資源-CSDN文庫
4、創建類 Demo01.java 5、注冊驅動
Class.forName("com.mysql.cj.jdbc.Driver");
6、獲取數據庫連接對象
private static final String URL = "jdbc:mysql://localhost:3306/db1";
private static final String USER = "root";
private static final String PASSWORD = "root";
... ...
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?user=root&password=root");
Properties p = new Properties();
p.setProperty("user","root");
p.setProperty("password","root")
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", p);
【注意】需要填寫3個參數,分別是數據庫連接URL、用戶名、密碼,需要填寫你自己的。
其中URL的構成:
jdbc:mysql:// localhost:3306 / db1
協議 IP地址 端口 要連接的數據庫名稱
7、獲取執行SQL語句的對象
Statement stat = conn.createStatement();
8、執行SQL語句 增刪改:
stat.executeUpdate("insert into user value(1,'admin','root')");
stat.executeUpdate("update user set name = 'sunny' where id = 1");
stat.executeUpdate("delete from user where id = 1");
查:
ResultSet rs = stat.executeQuery("select * from user");
while (rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("id="+id+",name="+name+",password="+password);
}
方法解析:
9、釋放連接
rs.close();
stat.close();
conn.close();
完整代碼:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Demo01 {
private static final String URL = "jdbc:mysql://localhost:3306/db1";
private static final String USER = "root";
private static final String PASSWORD = "root";
public static void main(String[] args) throws Exception {
// 注冊驅動
Class.forName("com.mysql.cj.jdbc.Driver");
// 獲取數據庫連接對象
// 方法1
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 方法2
/*Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?user=root&password=root");*/
// 方法3
/*
Properties p = new Properties();
p.setProperty("user","root");
p.setProperty("password","root")
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", p);
*/
// 獲取執行SQL語句的對象
Statement stat = conn.createStatement();
// 執行SQL語句
stat.executeUpdate("insert into user value(1,'admin','root')");
stat.executeUpdate("update user set name = 'sunny' where id = 1");
stat.executeUpdate("delete from user where id = 1");
ResultSet rs = stat.executeQuery("select * from user");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("id=" + id + ",name=" + name + ",password=" + password);
}
// 釋放連接
rs.close();
stat.close();
conn.close();
}
}
二、編寫使用工具類
觀察上面的代碼我們可以發現,除了執行SQL的語句有所不同外,其他代碼的格式基本上都是固定的。我們可以編寫一個工具類,提供 獲取數據庫連接對象、關閉數據庫相關資源 等相關方法。
1、編寫工具類 .java
創建 Utils 文件夾,將代碼相關的工具類都放到里面。編寫.java,代碼首先運行靜態代碼塊類的語句,獲得數據庫連接對象。
import java.sql.*;
public class JdbcUtils {
private static final String driver = "com.mysql.cj.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/db1";
private static final String name = "root";
private static final String password = "root";
private static final Connection conn;
static {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, name, password);
} catch (ClassNotFoundException | SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 獲取數據庫連接對象
* @return 數據庫連接對象
*/
public static Connection getConnect() {
return conn;
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param ps sql語句執行對象
* @param rs 查詢結果集
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null) conn.close();
if (ps != null) ps.close();
if (rs != null) rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param ps sql語句執行對象
*/
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param rs 查詢結果集
*/
public static void close(Connection conn, ResultSet rs) {
close(conn, null, rs);
}
}
2、解耦代碼
分析工具類,可以發現關于數據庫連接的相關參數,如 driver、url、user、 等均寫在代碼中,程序的耦合性較高。可以將變量寫在 .文件中,程序通過讀取文件的方式獲得相關信息。
首先創建 jdbc. 資源包,以 “ 鍵=值 ” 的形式寫入相關參數。
jdbc.
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db1
name=root
password=root
.java
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils {
private static final String driver;
private static final String url;
private static final String name;
private static final String password;
static {
try {
Properties p = new Properties();
p.load(JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"));
driver = p.getProperty("driver");
url = p.getProperty("url");
name = p.getProperty("name");
password = p.getProperty("password");
Class.forName(driver);
} catch (ClassNotFoundException | IOException e) {
throw new RuntimeException(e);
}
}
/**
* 獲取數據庫連接對象
* @return 數據庫連接對象
* @throws Exception 獲取失敗
*/
public static Connection getConnect() throws Exception {
return DriverManager.getConnection(url, name, password);
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param ps sql語句執行對象
* @param rs 查詢結果集
*/
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (conn != null) conn.close();
if (ps != null) ps.close();
if (rs != null) rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param ps sql語句執行對象
*/
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
/**
* 關閉數據庫相關資源
* @param conn 數據庫連接對象
* @param rs 查詢結果集
*/
public static void close(Connection conn, ResultSet rs) {
close(conn, null, rs);
}
}
3、使用工具類
import Utils.JdbcUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcUtilsDemo {
public static void main(String[] args) throws Exception {
query();
}
public static void query() throws Exception {
Connection conn = JdbcUtils.getConnect();
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select * from user");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("id=" + id + ",name=" + name + ",password=" + password);
}
JdbcUtils.close(conn, rs);
}
}
三、使用數據庫連接池
數據庫連接池是存儲數據庫連接對象的容器,你可以想象成一個已經提前 裝好數個連接對象的池子。當你需要 連接對象 時,可以直接從池子獲取,用完歸還即可。這樣當程序在運行的時候,不用自己去創建數據庫連接對象,從而提高了運行效率。常用的JDBC連接池有C3P0、Druid。
1、簡單的數據庫連接池
編寫一個簡陋的 數據庫連接池,用于理解原理。
import Utils.JdbcUtils;
import java.sql.Connection;
import java.util.LinkedList;
public class SimpleConnectPool {
private static LinkedList pool = new LinkedList<>();
static {
try {
for (int i = 1; i <= 5; i++) {
// 獲取數據庫連接對象
Connection conn = JdbcUtils.getConnect();
// 將連接對象放到 pool 中
pool.add(conn);
}
} catch (Exception e) {
System.out.println("數據庫連接池初始化失敗!");
}
}
// 提供 獲取數據庫連接對象 的方法(pool刪除)
public static synchronized Connection getConnect(){
if(pool.size() > 0){

return pool.removeFirst();
}
throw new RuntimeException("數據庫連接池中 對象已用完");
}
// 提供 歸還數據庫連接對象 的方法(pool添加)
public static void close(Connection conn){
pool.addLast(conn);
}
}
使用該連接池
import java.sql.Connection;
public class SimpleConnectPoolDemo {
public static void main(String[] args) {
for (int i = 1; i <= 6; i++) {
Connection conn = SimpleConnectPool.getConnect();
System.out.printf("第" + i + "次獲取:" + conn+"\n");
if (i == 3) {
SimpleConnectPool.close(conn);
System.out.printf("第" + i + "次歸還:" + conn+"\n");
}
}
}
}
2、使用 C3P0 數據庫連接池
步驟:
(1)導入jar包。導入方式和mysql驅動包的導入一樣,注意這次除了要導入一個jar包外,還需要導入一個 xml 配置文件,即如下2個文件。
C3P0下載:c3p0-0.9.5.2-Java文檔類資源-CSDN文庫
(2)編寫 c3p0-config.xml 配置文件。打開 c3p0-config.xml ,將里面與數據庫連接相關的4個參數修改為自己的。C3P0會根據這個配置文件中的參數連接你的mysql數據庫。
【注意】該配置文件需放在 src 目錄下。
com.mysql.cj.jdbc.Driver
jdbc:mysql://localhost:3306/db1
root
root
5
10
3000
(3)創建 類,編寫相關代碼。
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class C3P0Demo1 {
public static void main(String[] args) throws SQLException {
// 創建數據庫連接池對象
DataSource dataSource = new ComboPooledDataSource();
// 獲取數據庫連接對象
Connection conn = dataSource.getConnection();
System.out.println(conn);
// 歸還連接
conn.close();
}
}
(4)你也可以不編寫 c3p0-config.xml 配置文件,直接在代碼中設置數據庫連接相關參數。創建 類,編寫相關代碼。
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
public class C3P0Demo2 {
public static void main(String[] args) throws PropertyVetoException, SQLException {
// 創建數據庫連接池對象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 配置參數信息
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db1");
dataSource.setUser("root");
dataSource.setPassword("root");
// 獲取數據庫連接對象
Connection conn = dataSource.getConnection();
System.out.println(conn);
// 歸還連接
conn.close();
}
}
3、使用 Druid 數據庫連接池
(1)導入jar包。導入方式和mysql驅動包的導入一樣,注意這次除了要導入一個jar包外,還需要導入一個 配置文件,即如下2個文件。
Druid下載:druid-1.0.9-Java文檔類資源-CSDN文庫
(2)編寫 druid. 配置文件。打開 druid. ,將里面與數據庫連接相關的參數修改為自己的。Druid會根據這個配置文件中的參數連接你的mysql數據庫。
【注意】該配置文件需放在 src 目錄下。
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db1
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200
(3)創建 類,編寫相關代碼。
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;
public class DruidDemo1 {
public static void main(String[] args) throws Exception {
// 創建數據庫連接池對象
Properties p = new Properties();
p.load(DruidDemo1.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
// 獲取數據庫連接對象
Connection conn = dataSource.getConnection();
System.out.println(conn);
// 歸還連接
conn.close();
}
}
(4)同樣的,你也可以不編寫 druid. 配置文件,直接在代碼中設置數據庫連接相關參數。創建 類,編寫相關代碼。
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
public class DruidDemo2 {
public static void main(String[] args) throws Exception {
// 創建數據庫連接池對象
DruidDataSource dataSource = new DruidDataSource();
// 配置參數信息
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db1");
dataSource.setUsername("root");
dataSource.setPassword("root");
// 獲取數據庫連接對象
Connection conn = dataSource.getConnection();
System.out.println(conn);
// 歸還連接
conn.close();
}
}
4、編寫 Druid 工具類
當然,你可以像上面的 一樣編寫 Druid 的工具類。工具類代碼放在Utils 目錄下。我這里使用的是編寫配置文件的方式,配置文件不用改變。
package Utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidUtils {
public static DataSource dataSource;
static {
try {
Properties p = new Properties();
p.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// 獲取數據庫連接池對象的方法
public static DataSource getDataSource() {
return dataSource;
}
// 獲取數據庫連接對象的方法
public static Connection getConnection() throws Exception {
return dataSource.getConnection();
}
// 歸還數據庫連接對象的方法
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
// 歸還數據庫連接對象
if (conn != null) conn.close();
// 釋放sql語句執行對象
if (ps != null) ps.close();
// 釋放查詢結果集
if (rs != null) rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
使用:
package Pool;
import Utils.DruidUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DruidUtilsDemo3 {
public static void main(String[] args) throws Exception {
// 獲取數據庫連接對象
Connection conn = DruidUtils.getConnection();
// 獲取執行sql語句執行對象
PreparedStatement ps = conn.prepareStatement("select * from user");
// 執行sql語句,獲得結果集
ResultSet rs = ps.executeQuery();
// 解析結果集
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("password");
System.out.println("id=" + id + ",name=" + name + ",password=" + password);
}
// 歸還連接,釋放sql語句執行對象、結果集
DruidUtils.close(conn,ps,rs);
}
}
四、使用
是由Spring框架對JDBC進行封裝的基于ORM思想的工具類,他可以幫助我們簡化代碼。
1.ORM 對象關系映射思想(Object Mapping)
以我們瀏覽網站為例,當我們向網站的服務器發送請求(例如登錄操作),服務器會收到我們請求相關的信息(例如登錄的用戶名、密碼)。ORM的思想是先將這些信息封裝到一個名為user的類中,這個類中的字段比如id,name,等,會和數據庫中表的列名一一對應。通過JDBC的解封裝、反射等技術,將數據傳遞給數據庫以及返回給服務器。
2、簡單使用
(1)導入jar包。需要導入5個包,包名如下:
下載:-Java文檔類資源-CSDN文庫
(2)創建 User 類,類中的字段 和 你的數據庫里面的表 一一對應。這段代碼推薦使用工具自動生成,盡量不要自己寫。
public class User {
private int id;
private String name;
private String password;
public User() {
}
public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}';
}
}
【注意】不要忘記無參構造!不要忘記漏了setXXX()、getXXX()方法!
(3)創建 類,編寫相關代碼
(4)創建數據庫連接池對象(C3P0或者Druid)
C3P0:
DataSource dataSource = new ComboPooledDataSource();
Druid:
Properties p = new Properties();
p.load(JdbcTemplateDemo.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
(5)創建對象,將數據庫連接池對象封裝到對象
方式1:通過的有參構造賦值
JdbcTemplate jt = new JdbcTemplate(dataSource);
方式2:通過的方法賦值
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(dataSource);
(6)執行 sql 語句
增刪改:
User user = new User(1,"admin","1234");
jt.update("insert into user value (?,?,?)",user.getId(),user.getName(),user.getPassword());
jt.update("update user set name = ? where id = ?", user.getName(), user.getId());
jt.update("delete from user where id = ?", user.getId());
查:
int id = 1; // 僅為簡單示范
User user = jt.queryForObject("select * from user where id = ?",new BeanPropertyRowMapper<>(User.class),id);
System.out.println(user);
List users = jt.query("select * from user", new BeanPropertyRowMapper<>(User.class));
for (User a : users) System.out.println(a);
int id = 1; // 僅為簡單示范
String name = jt.queryForObject("select name from user where id = ?", String.class, id);
System.out.println(name);
int count = jt.queryForObject("select count(*) from user",int.class);
System.out.println(count);
(7)所有代碼:
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
public class JdbcTemplateDemo {
public static void main(String[] args) throws Exception {
// 1.創建數據庫連接池對象
/* C3P0 */
DataSource dataSource = new ComboPooledDataSource();
/* Druid */
/*
Properties p = new Properties();
p.load(JdbcTemplateDemo.class.getClassLoader().getResourceAsStream("druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(p);
*/
// 2.創建 JdbcTemplate 對象,將數據庫連接池封裝到 JdbcTemplate 對象
/* 方法一 : 提供有參構造賦值 */
// JdbcTemplate jt = new JdbcTemplate(dataSource);
/* 方法二 : 通過setDataSource賦值 */
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(dataSource);
// 3.執行 sql 語句
/* 增刪改 */
User user1 = new User(1,"admin","1234"); // 僅為簡單示范
jt.update("insert into user value (?,?,?)", user1.getId(), user1.getName(),user1.getPassword());
jt.update("update user set name = ? where id = ?", user1.getName(), user1.getId());
jt.update("delete from user where id = ?", user1.getId());
/* 查 */
// 查詢一條數據
int id = 1; // 僅為簡單示范
User user2 = jt.queryForObject("select * from user where id = ?",new BeanPropertyRowMapper<>(User.class),id);
System.out.println(user2);
// 查詢多條記錄
List users = jt.query("select * from user", new BeanPropertyRowMapper<>(User.class));
for (User a : users) System.out.println(a);
// 查詢一個數據 : 查詢 id=1 的 name 值
String name = jt.queryForObject("select name from user where id = ?", String.class, 1);
System.out.println(name);
// 查詢一個數據 : 查詢表中有多少條記錄
int count = jt.queryForObject("select count(*) from user",int.class);
System.out.println(count);
}
}
public class User {
private int id;
private String name;
private String password;
public User() {
}
public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}';
}
}
3、實際項目中的使用
項目結構:
(1)UserDao類
import java.util.List;
public interface UserDao {
// 添加用戶
void add(User user);
// 修改用戶
void update(User user);
// 刪除用戶
void delete(int id);
// 查詢所有
List findAll();
// 查詢一條數據
User findById(int id);
}
(2)類
import Utils.DruidUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class UserDaoImpl implements UserDao {
// 創建 JdbcTemplate 對象
private final JdbcTemplate jt = new JdbcTemplate(DruidUtils.getDataSource());
@Override
public void add(User user) {
jt.update("insert into user values(?,?,?)", user.getId(), user.getName(), user.getPassword());
}
@Override
public void update(User user) {
jt.update("update user set name = ?,password = ? where id = ?", user.getName(), user.getPassword(), user.getId());
}
@Override
public void delete(int id) {
jt.update("delete from user where id = ?", id);
}
@Override
public List findAll() {
List users = jt.query("select * from user", new BeanPropertyRowMapper<>(User.class));
return users;
}
@Override
public User findById(int id) {
User user = jt.queryForObject("select * from user where id = ?", new BeanPropertyRowMapper<>(User.class), id);
return user;
}
}
(3)User 類
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
private String password;
public User() {
}
public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
@Override
public String toString() {
return "User{" + "id=" + id + ", name='" + name + '\'' + ", password='" + password + '\'' + '}';
}
}
(4) 類
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DruidUtils {
public static DataSource dataSource;
static {
try {
Properties p = new Properties();
p.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
dataSource = DruidDataSourceFactory.createDataSource(p);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
// 獲取數據庫連接池對象的方法
public static DataSource getDataSource() {
return dataSource;
}
// 獲取數據庫連接對象的方法
public static Connection getConnection() throws Exception {
return dataSource.getConnection();
}
// 歸還數據庫連接對象的方法
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
// 歸還數據庫連接對象
if (conn != null) conn.close();
// 釋放sql語句執行對象
if (ps != null) ps.close();
// 釋放查詢結果集
if (rs != null) rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
(5) 類
import org.junit.Test;
import java.util.List;
public class UserTest {
// 創建 Dao 對象
private final UserDao userDao = new UserDaoImpl();
@Test
public void add() {
User user = new User(1, "ketty", "eee");
userDao.add(user);
}
@Test
public void update() {
User user = new User(1, "hello", "root");
userDao.update(user);
}
@Test
public void delete() {
userDao.delete(1);
}
@Test
public void findAll() {
List users = userDao.findAll();
for (User a : users) {
System.out.println(a);
}
}
@Test
public void findById() {
User user = userDao.findById(1);
System.out.println(user);
}
類中使用了 JUnit 的 @Test ,以便更快進行測試。你也可以在main方法中進行測試。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。