• 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;
        }
    }
    

      

  • 相关阅读:
    面向对象进阶
    20191011作业
    2019.10.10作业
    类的继承
    面向对象
    2019.10.09作业
    pandas模块
    [BZOJ 2190][SDOI2008]仪仗队(欧拉函数)
    [BZOJ 2729][HNOI2012]排队(组合数学+高精)
    [BZOJ 1491][NOI2007]社交网络(Floyd)
  • 原文地址:https://www.cnblogs.com/liubosong/p/11993705.html
Copyright © 2020-2023  润新知