封装jdbc的插入、更新、删除、查询方法公用类

import java.sql.Connection;
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);
}
}
}


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值