JDBC-BasicDAO

  • 其实就是封装各种功能
    在这里插入图片描述

  • dao包存放BasicDAO和各种类DAO

  • 在这里插入图片描述

  • domain存放各种类

  • 在这里插入图片描述

  • test用来测试

  • utils存放工具类

basicDAO

import com.jdbc.utils.JDBCUtilsByDruid;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

// 其他DAO的父类
public class BasicDAO<T> {

    private QueryRunner qr = new QueryRunner();

    //开发通用的DML方法,针对任意的表
    public int update(String sql, Object... parameters){
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            int update = qr.update(connection, sql, parameters);
            return update;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtilsByDruid.closeConnection(null,connection,null);
        }
    }

    /**
     *
     * @param sql sql语句,可以有占位符?
     * @param tClass 传入一个Class类对象,方便反射
     * @param parameters 传入占位符?的具体数值,可以是多个
     * @return 根据传入的Class类对象,返回对应的ArrayList结果
     */
    // 返回多个对象
    public List<T> queryMulti(String sql, Class<T> tClass,Object... parameters){
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            List<T> query = qr.query(connection, sql,new BeanListHandler<>(tClass),parameters);
            return query;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtilsByDruid.closeConnection(null,connection,null);
        }
    }

    // 返回单行结果
    public T querySingle(String sql,Class<T> tClass, Object... parameters){
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            T query = qr.query(connection, sql,new BeanHandler<>(tClass),parameters);
            return query;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtilsByDruid.closeConnection(null,connection,null);
        }
    }

    // 返回单值结果,即单行单列
    public Object queryScalar(String sql,Object... parameters){
        Connection connection = null;

        try {
            connection = JDBCUtilsByDruid.getConnection();
            Object query = qr.query(connection,sql, new ScalarHandler(), parameters);
            return query;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            JDBCUtilsByDruid.closeConnection(null,connection,null);
        }
    }
}

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值