您的位置:首页 > 数据库 > MySQL

mysql DAO basedao

2019-12-06 10:19 281 查看

主要功能

封装 对数据库的操作方法

增 删 改 查 都在里面 basedao里面 

dbutils里面的update 可以实现 增 删 改

dbutils里面的query 可以实现 一行 和 多行的查询

查询的返回结果 封装为bean对象.

具体使用时候  继承basedao  实现其他需求的方法

public class UserDaoImpl extends BaseDao<User> implements UserDao
package com.itstaredu.bookstore.dao;

/**
* @version 1.0
* @date 2019/12/5 9:32 下午
**/

import com.itstaredu.bookstore.utils.JDBCUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
* 封装对数据库操作的基本方法
* 一行所有的表的增删改查都在这里面调用
* 对象的方法
*
*/
public class BaseDao<T> {
private Class<T> type;
private QueryRunner queryRunner = new QueryRunner();

public BaseDao() {
Class<? extends BaseDao> cla = this.getClass();
/**
* 带有泛型的父类
*/
ParameterizedType tp = (ParameterizedType) cla.getGenericSuperclass();
Type[] types = tp.getActualTypeArguments();
type = (Class<T>) types[0];
}

/**
* 对数据库操作的工具类dbutils提供
* 增 删 改
*/
public int update(String sql, Object... params) {
/**
* 不要向外抛 处理很麻烦 在内部处理
*/
int update = 0;
Connection connect = JDBCUtils.getConnect();
try {
update = queryRunner.update(connect, sql, params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.releaseConnection(connect);
}
return update;
}

/**
* ResultSetHandler 将结果转换为对象的处理程序
* The Class that objects returned from handle() are created from
*/
public T getBean(String sql, Object... params) {
Connection conn = JDBCUtils.getConnect();

T t = null;
try {
t = queryRunner.query(conn, sql, new BeanHandler<T>(type), params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.releaseConnection(conn);
}
return t;
}

public List<T> getListBean(String sql, Object... params) {
Connection conn = JDBCUtils.getConnect();
List<T> list = null;
try {
list = queryRunner.query(conn, sql, new BeanListHandler<T>(type), params);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.releaseConnection(conn);
}
return list;
}
}

  

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