主要功能
封装 对数据库的操作方法
增 删 改 查 都在里面 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; } }