/**
*对JDBC连接的封装
**/
import java.sql.*;
public class JdbcUtil {
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/supermarketsystem?characterEncoding=utf-8&useSSL=true";
String name = "root";
String password = "123456";
conn = DriverManager.getConnection(url,name,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void allClose(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) {
e.printStackTrace();
}
}
}
/**
*对Dao的抽象化
**/
public abstract class BaseDao<T> {
/**
* 添加的基方法
* @param sql
* @param params
* @return
*/
public boolean add(String sql,Object... params){
return addOrDeleteOrmodify(sql,params);
}
/**
* 删除的基方法
* @param sql
* @param params
* @return
*/
public boolean delete(String sql,Object... params){
return addOrDeleteOrmodify(sql,params);
}
/**
* 修改的基方法
* @param sql
* @param params
* @return
*/
public boolean modify(String sql,Object... params){
return addOrDeleteOrmodify(sql,params);
}
/**
* 查询所有基方法
* @param sql
* @param params
* @return
*/
public List<T> findAll(String sql,Object... params){
Connection conn = JdbcUtil.getConnection();//获取连接
PreparedStatement ps = null;
ResultSet rs = null;
List<T> list = new ArrayList<T>();
try {
ps = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
rs = ps.executeQuery();
T t = null;
while(rs.next()){
t = getEntity(rs);
list.add(t);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
/**
* 查询单个
* @param sql
* @param params
* @return
*/
public T findOne(String sql,Object... params){
T t = null;
List<T> list= findAll(sql,params);
if(list.size()>0){
t = list.get(0);
}
return t;
}
/**
* 查询单个元素
* @param sql
* @param params
* @return
*/
public Object findOneParam(String sql,Object... params){
Connection conn = JdbcUtil.getConnection();//获取连接
PreparedStatement ps = null;
ResultSet rs = null;
Object oj = null;
try {
ps= conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
rs=ps.executeQuery();
while (rs.next()){
oj=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return oj;
}
protected abstract T getEntity(ResultSet rs);
/**
* 添加,删除,修改的基方法
* @param sql
* @param params
* @return
*/
public boolean addOrDeleteOrmodify(String sql,Object... params){
Connection conn = null;
PreparedStatement ps = null;
conn= JdbcUtil.getConnection();
int b=0;
try {
ps=conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
ps.setObject(i+1,params[i]);
}
b = ps.executeUpdate();//运行
} catch (SQLException e) {
e.printStackTrace();
}
if(b>0){//判断是否操作成功
return true;
}else{
return false;
}
}
}