文件的定义规范:

Dao.java文件内容:
package com.sk.jdbc.dao;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import com.sk.jdbc.util.ConnectionUtil;
//Dao类中存放通用的数据访问方法
public class Dao<T> {
private Class<T> clazz;
private QueryRunner queryRunner = new QueryRunner();
public Connection conn = null;
@SuppressWarnings("unchecked")
public Dao() {
Type type = this.getClass().getGenericSuperclass(); //
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] types = parameterizedType.getActualTypeArguments();
if (types != null && types.length > 0) {
if (types[0] instanceof Class) {
clazz = (Class<T>) types[0];
}
}
}
}
public void openConnection() throws SQLException {
if (this.conn == null || this.conn.isClosed()) {
this.conn = ConnectionUtil.getConnection();
}
}
public void closeConnection() throws SQLException {
if (this.conn != null && !this.conn.isClosed() ) {
ConnectionUtil.release(this.conn);
}
}
public void beginTransaction() throws SQLException {
openConnection();
this.conn.setAutoCommit(false);
}
public void commit() throws SQLException {
if (this.conn != null) {
this.conn.commit();
}
}
public void rollback() throws SQLException {
if (this.conn != null) {
this.conn.rollback();
}
}
// 通用的update()方法:
public void update(String sql, Object... args) throws SQLException {
openConnection();
queryRunner.update(conn, sql, args);
}
// 通用的查询方法----查单个记录
public T queryOne(String sql, Object... args) throws SQLException {
T entity = null;
openConnection();
entity = queryRunner.query(conn, sql, new BeanHandler<>(clazz), args);
return entity;
}
// 通用的查询方法----查多个记录
public List<T> queryList(String sql, Object... args) throws SQLException {
List<T> list = null;
openConnection();
list = queryRunner.query(conn, sql, new BeanListHandler<>(clazz), args);
return list;
}
// 查单值
public Object queryValue(String sql, Object... args) throws SQLException {
Object result = null;
openConnection();
result = queryRunner.query(conn, sql, new ScalarHandler<>(), args);
return result;
}
public Map<String, Object> queryMap(String sql, Object... args)
throws SQLException {
Map<String, Object> phoneMap = null;
openConnection();
phoneMap = queryRunner.query(conn, sql, new MapHandler(), args);
return phoneMap;
}
public List<Map<String, Object>> queryMapList(String sql, Object... args)
throws SQLException {
List<Map<String, Object>> phoneMapList = null;
openConnection();
phoneMapList = queryRunner.query(conn, sql, new MapListHandler(), args);
return phoneMapList;
}
}
原文:https://www.cnblogs.com/Polar-sunshine/p/13672245.html