读书人

Dbutil 运用总结

发布时间: 2012-07-04 19:33:55 作者: rapoo

Dbutil 使用总结

public class BaseDao<T> {

? ? private Class<T> clazz;

? ? @Resource(name = "dataSource")
? ? private DataSource datasource;

? ? protected static final Logger logger = LoggerFactory.getLogger("com.device.grant.dao");

? ? @SuppressWarnings("unchecked")
? ? public BaseDao() {
? ? ? ? this.clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
? ? }

? ? /**
? ? ?* 查询并转换成 List 集合列表
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?执行SQL
? ? ?*
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?SQL 必备参数
? ? ?* @return List<T> - 返回集合列表,没有则返回空集合
? ? ?*/
? ? public List<T> queryList(String sql, Object[] params) {
? ? ? ? Connection connection = null;
? ? ? ? List<T> value = null;
? ? ? ? try {
? ? ? ? ? ? connection = datasource.getConnection();
? ? ? ? ? ? QueryRunner run = new QueryRunner();
? ? ? ? ? ? value = (List<T>) run.query(connection, sql, new BeanListHandler<T>(clazz), params);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? logger.error("queryList - the SQL is " + sql + ",params is " + params, e);

? ? ? ? ? ? value = Collections.emptyList();
? ? ? ? } finally {
? ? ? ? ? ? DbUtils.closeQuietly(connection);
? ? ? ? }

? ? ? ? return value;
? ? }

? ? /**
? ? ?* 获取单个 javaBean 对象
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?执行SQL脚本
? ? ?*
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?执行脚本参数
? ? ?* @return T - 查询的对象
? ? ?*/
? ? public T get(String sql, Object[] params) {
? ? ? ? Connection connection = null;

? ? ? ? T object = null;
? ? ? ? try {
? ? ? ? ? ? connection = datasource.getConnection();
? ? ? ? ? ? QueryRunner run = new QueryRunner();
? ? ? ? ? ? object = run.query(connection, sql, new BeanHandler<T>(clazz), params);
? ? ? ? } catch (SQLException e) {
? ? ? ? ? ? logger.error("get - the sql is " + sql + ", params is " + params, e);
? ? ? ? } finally {
? ? ? ? ? ? DbUtils.closeQuietly(connection);
? ? ? ? }

? ? ? ? return object;
? ? }

? ? /**
? ? ?* 统计当前操作的记录数
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?统计SQL
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?参数
? ? ?* @return int - 返回的行数, -1 表示异常
? ? ?*/
? ? public int count(String sql, Object[] params) {
? ? ? ? Connection connection = null;

? ? ? ? int count = -1;

? ? ? ? try {
? ? ? ? ? ? connection = datasource.getConnection();
? ? ? ? ? ? QueryRunner run = new QueryRunner();
? ? ? ? ? ? count = run.query(connection, sql, new ResultSetHandler<Integer>() {
? ? ? ? ? ? ? ? public Integer handle(ResultSet rs) throws SQLException {
? ? ? ? ? ? ? ? ? ? rs.next();
? ? ? ? ? ? ? ? ? ? return rs.getInt(1);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }, params);
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? logger.error("count - the sql is " + sql + ", params is " + params, e);
? ? ? ? }finally {
? ? ? ? ? ? DbUtils.closeQuietly(connection);
? ? ? ? }

? ? ? ? return count;
? ? }

? ? /**
? ? ?* 修改
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?SQL 修改命令
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?修改执行参数
? ? ?*
? ? ?* @return boolean - 是否执行成功
? ? ?*/
? ? public boolean update(String sql, Object[] params) {
? ? ? ? return deleteOrUpdateOrInsert(sql, params);
? ? }

? ? /**
? ? ?* 删除
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?SQL 删除命令
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?修改执行参数
? ? ?*
? ? ?* @return boolean - 是否执行成功
? ? ?*/
? ? public boolean delete(String sql, Object[] params) {
? ? ? ? return deleteOrUpdateOrInsert(sql, params);
? ? }

? ? /**
? ? ?* 删除
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?SQL 删除命令
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?修改执行参数
? ? ?*
? ? ?* @return boolean - 是否执行成功
? ? ?*/
? ? public boolean insert(String sql, Object[] params) {
? ? ? ? return deleteOrUpdateOrInsert(sql, params);
? ? }
? ?
? ? /**
? ? ?* 修改或删除或新增执行
? ? ?*
? ? ?* @param sql -
? ? ?* ? ? ? ? ? ?SQL 命令脚本
? ? ?* @param params -
? ? ?* ? ? ? ? ? ?参数
? ? ?* @return boolean - 执行结果
? ? ?*/
? ? private boolean deleteOrUpdateOrInsert(String sql, Object[] params) {
? ? ? ? Connection connection = null;
? ? ? ? boolean flag = false;
? ? ? ? try {
? ? ? ? ? ? connection = datasource.getConnection();
? ? ? ? ? ? QueryRunner run = new QueryRunner();
? ? ? ? ? ? if (run.update(connection, sql, params) > 0) {
? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? }
? ? ? ? } catch (Throwable e) {
? ? ? ? ? ? logger.error("deleteOrUpdateOrInsert- the sql is " + sql + ", params is " + params, e);
? ? ? ? } finally {
? ? ? ? ? ? DbUtils.closeQuietly(connection);
? ? ? ? }

? ? ? ? return flag;
? ? }

读书人网 >其他数据库

热点推荐