您的位置:首页 > 其它

jdbc工具类,实现了通用的dml和dql操作

2016-03-14 22:36 239 查看

一个jdbc的操作工具类,通用的dml,dql操作

项目src目录下创建jdbc.properties文件,内容如下:

driverPath=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/pro2

userName=root

passWord=root


代码如下:

/**

* jdbc操作数据库的工具类

*

* @author JefferyLeng

*

*/

@SuppressWarnings(“all”)

public class JDBCUtil {

private JDBCUtil() {}

/* 数据库的驱动路径 */
private static String driverPath;
/* 数据库连接url*/
private static String url;
/* 用户名 */
private static String userName;
/* 密码 */
private static String passWord;

private static Connection conn = null;
private static Statement stmt = null;
private static ResultSet rs = null;

static {
//加载数据驱动信息
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
driverPath = bundle.getString("driverPath");
url = bundle.getString("url");
userName = bundle.getString("userName");
passWord = bundle.getString("passWord");
}

/**
* 得到mysql的驱动
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
Class.forName(driverPath);
return DriverManager.getConnection(url,userName,passWord);
}

/**
* 执行DML操作 insert update delete
* @return
*/
public static int dmlOperate(String sql,Object[] objs) {
try {
conn = getConnection();
PreparedStatement pstm = conn.prepareStatement(sql);
for (int i = 0; i < objs.length; i++) {
pstm.setObject(i + 1,objs[i]);
}

return pstm.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
releaseResource(conn, stmt, null);
}
return -1;
}

/**
* 通用的查询操作
*  返回的都是List集合
* @return
*/
public static <T> List dqlOperate(String sql, List params, Class cls) throws Exception {
List list = new ArrayList();
int index = 1;
conn = getConnection();
PreparedStatement pstm = conn.prepareStatement(sql);
//preparedStatement参数赋值
if (params != null && !params.isEmpty())
{
for (int i = 0; i < params.size(); i++)
{
pstm.setObject(index++, params.get(i));
}
}
rs = pstm.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int cols_len = metaData.getColumnCount();           //获取列的数量
while (rs.next())
{
T resultObject = (T) cls.newInstance();
for (int i = 0; i < cols_len; i++)
{
String cols_name = metaData.getColumnName(i + 1);          //获取列名
Object cols_value = rs.getObject(cols_name);            //获取列名对应的数据信息
if (cols_value == null)
{
cols_value = "";
}
//暴力反射  为javaBean属性赋值
Field field = cls.getDeclaredField(cols_name);
field.setAccessible(true);
field.set(resultObject, cols_value);
}
//将遍历出来的对象 存储到集合中
list.add(resultObject);
}
return list;
}

/**
* 释放资源
* @param conn
* @param stmt
* @param rs
*/
public static void releaseResource(Connection conn,Statement stmt,ResultSet rs) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}

rs = null;      //gc快速回收该引用
}

if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}

stmt = null;        //gc快速回收该引用
}

if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}

conn = null;        //gc快速回收该引用
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: