import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.validation.constraints.Null;
import org.apache.commons.beanutils.BeanUtils;
public class BaseDao {
private Connection conn = null;
private PreparedStatement prest = null;
private ResultSet rSet = null;
/*
* 插入,更新,删除
*/
public void update(String sql, Object[] params) {
try {
// 获取连接对象
conn = jdbcUtil.getConnection();
// 创建PrepareStatement对象
prest = conn.prepareStatement(sql);
// 获取占位符参数的个数
int Count = prest.getParameterMetaData().getParameterCount();
// 设置参数
if (params != null && params.length > 0) {
for (int i = 0; i < Count; i++) {
prest.setObject(i + 1, params[i]);
}
}
// 执行
prest.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
// 关闭流
jdbcUtil.close(conn, prest, null);
}
}
/*
* 查询
*/
public <T> List<T> Query(String sql, Object params[], Class<T> cla) {
try {
List<T> list = new ArrayList<T>();
// 获取连接对象
conn = jdbcUtil.getConnection();
// 创建PrepareStatement对象
prest = conn.prepareStatement(sql);
// 获取占位符参数的个数
int Count = prest.getParameterMetaData().getParameterCount();
// 设置参数
if (params != null && params.length > 0) {
for (int i = 0; i < Count; i++) {
prest.setObject(i + 1, params[i]);
}
}
// 执行
rSet = prest.executeQuery();
int rSetCount = rSet.getMetaData().getColumnCount();
while (rSet.next()) {
T t = cla.newInstance();
for (int i = 0; i < rSetCount; i++) {
String columnName = rSet.getMetaData().getColumnName(i + 1);// 获取列名称
Object object = rSet.getObject(columnName);// 获取列值
// 封装属性和值 BeanUtils组件
BeanUtils.copyProperty(t, columnName, object);
}
list.add(t);
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jdbcUtil.close(conn, prest, rSet);
}
}
}
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class jdbcUtil {
private static String url="jdbc:mysql://localhost:3306/day15?characterEncoding=utf8";
private static String user="root";
private static String password="root";
//静态代码块,程序执行就加载,并且只加载一次
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("驱动注册失败!");
}
}
public static Connection getConnection() {
Connection connection=null;
try {
connection= DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
return connection;
}
public static void close(Connection conn,Statement state) {
if (state!=null) {
try {
state.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
if (conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
public static void close(Connection conn,Statement state,ResultSet reSet) {
if (reSet!=null) {
try {
reSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
if (state!=null) {
try {
state.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
if (conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
}