封装BaseDao

BaseDao 自己要封装的一个类,

这个类对数据库的数据进行增删改查的

在这个类中只需要写两个方法  一个是增删改  一个查

import org.apache.commons.beanutils.BeanUtils;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
    //增删改方法
    public int update(String sql,Object[] parameters){
        Connection connection = JdbcUtil.getConnection();//1.获取数据库的连接对象,从JdbcUtil工具中
        PreparedStatement preparedStatement=null;//2.获取预处理的搬运工对象去预处理sql语句
        try {
            preparedStatement =connection.prepareStatement(sql);//预处理sql语句
            int parameterCount = preparedStatement.getParameterMetaData().getParameterCount();//3.依靠元数据获取参数的个数
            if (parameters != null && parameters.length==parameterCount) { //保证传进来的集合的元素个数与元数据的个数相等
                for (int i = 1; i <=parameterCount ; i++) { //4.循环赋值
                    preparedStatement.setObject(i,parameters[i-1]); //把传进来的集合的值赋给搬运工
                }
            }
            int i =preparedStatement.executeUpdate();  //5.执行sql语句
            return i;   //返回的是受影响的行数
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {  //保证关闭
            JdbcUtil.close(preparedStatement,connection); //关闭搬运工和连接
        }
        return 0;   //返回的是受影响的行数
    }
//查找
    public <T>List<T> query(String sql,Object[] parameters,Class<T> cls){ //返回值是一个集合 ,传参分别是sql语句
        Connection connection = JdbcUtil.getConnection();//1.获取连接数据的对象
        PreparedStatement preparedStatement=null; //2.设置预处理的搬运工对象
        ResultSet resultSet =null;//设置结果集对象
        try {
            preparedStatement =connection.prepareStatement(sql);//预处理sql语句
            int parameterCount = preparedStatement.getParameterMetaData().getParameterCount();//3.获取元数据参数的个数
            if (parameters != null && parameters.length==parameterCount) {  //赋值的条件 传进来的集合的元素和必须与元数据参数的个数相等
                for (int i = 1; i <=parameterCount ; i++) {  //4.循环赋值
                    preparedStatement.setObject(i,parameters[i-1]);//把传进来的集合的数据赋值给搬运工对象
                }
            }
            resultSet = preparedStatement.executeQuery();//5.执行sql语句
            List<T> list = new ArrayList<>();//6.创建空集合
            ResultSetMetaData metaData = resultSet.getMetaData();//7.获取结果集元数据,通过元数据的字段个数和名字
            int columnCount = metaData.getColumnCount();//8.通过元数据获取对象字段的个数
            while (resultSet.next()){//9.遍历数据     while控制的是数据的行
                T t=cls.getConstructor(null).newInstance(null);//10.通过Class对象获取所对应的对象类
                for (int i = 1; i <=columnCount ; i++) { //控制列获取字段的
                    String columnName = metaData.getColumnName(i);  //11.获取列(字段)的名字
                    Object value = resultSet.getObject(columnName); //12.通过字段获取值
                    System.out.println(value);   //打印值
                    BeanUtils.setProperty(t,columnName,value);   //13.获取数据元数据之后,将数据赋值给一个对象
                    //BeanUtils.setProperty(对象, 属性, 值)
                }
                list.add(t);//14.把每次获取的值 存到集合中
            }
            return list.size()!=0?list:null;  //获取的值的长度如果不是零,返回list,如果长度为0返回null
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            JdbcUtil.close(resultSet,preparedStatement,connection);//15关闭资源
        }
        return null;//返回值是list集合,如果上面不执行返回null
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值