mysql DAO basedao

主要功能

封装 对数据库的操作方法

增 删 改 查 都在里面 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;
    }
}

  

猜你喜欢

转载自www.cnblogs.com/liubosong/p/11993705.html
DAO