只是简单的练习了一下如何写一个通用的BaseDao的增删改查。
ConnectionPool 方法
两个静态方法:
getConnection()
,用来得到一个连接。
close(Connection connection, Statement state, ResultSet reS)
,用于关闭资源。
package com.zhuqu.studyjdbc;
import com.alibaba.druid.pool.DruidDataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class ConnectionPool {
public static Connection getConnection(){
Connection conn = null;
Properties properties = new Properties();
try {
properties.load(ConnectionPool.class.getClassLoader().getResourceAsStream("DruidJDBC.properties"));
} catch (IOException e) {
e.printStackTrace();
System.out.println("找不到资源文件 DruidJDBC.properties... ");
}
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.configFromPropety(properties);
try {
conn = druidDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection connection, Statement state, ResultSet reS){
if (reS != null){
try {
reS.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
if (state != null){
try {
state.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
if (connection != null){
try {
connection.close();
} catch (SQLException e3) {
e3.printStackTrace();
}
}
}
}
BaseDao 接口
package com.zhuqu.studyjdbc;
import java.util.List;
public interface BaseDao<T> {
int Save(T t);
int Delete(T t);
/**
* 修改数据
* @param t POJO
* @param arrUpdate 要修该的opjo对象的字段集
* @param arrKey 关键条件集
* @return
*/
int Update(T t, String[] arrUpdate,String[] arrKey);
/**
* 查找一个
* @param tClass
* @param i
* @return
*/
T SelectByID(Class<T> tClass,int i);
/**
* 查找多个
* @return
*/
List<T> SelectAll();
}
接口 BaseDao 的实现类 BaseDaoImpl
package com.zhuqu.studyjdbc;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
public class BaseDaoImpl<T> implements BaseDao<T> {
protected Connection conn = null;
protected PreparedStatement stat = null;
protected int returnI = -1;
protected ResultSet resultSet = null;
protected String Sql = null;
@Override
public int Save(T t) {
returnI = -1;
Object o = t;
// 定义SQL:Insert Into T Values(?,?,?)
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.