zoukankan      html  css  js  c++  java
  • 对于jdbc的连接 使用泛型

    通用的查找方法设置

    public List findAll(String sql, Class cls, Object... obj){
    // 1. 获取连接
    Connection conn = DBUtil.getConn();
    // 2. 预处理对象
    PreparedStatement ps = null;
    // 3. 查询的结果对象
    ResultSet rs = null;
    // 4. 返回值对象
    List infos = new ArrayList<>();
    try{
    // 5. 实例化预处理对象,并处理sql语句
    ps = conn.prepareStatement(sql);
    // 6. 如果存在参数则处理参数,没有则直接执行
    for (int i = 0; i < obj.length; i++) {
    ps.setObject(i + 1, obj[i]);
    }
    rs = ps.executeQuery();
    while(rs.next()){
    // 循环获取每一行值
    T t = rsToBean(rs, cls);
    infos.add(t);
    }
    } catch (Exception e){
    e.printStackTrace();
    } finally {
    DBUtil.close(conn, ps, rs);
    }
    return infos;
    }

    public <T>T findOne(String sql, Class<T> cls, Object... obj){
        List<T> all = findAll(sql, cls, obj);
        if (all.size() > 0){
            return all.get(0);
        }
        return null;
    }
    

    private T rsToBean(ResultSet rs, Class cls) {
    T t = null;
    try{
    // 实例化对象
    t = cls.newInstance();
    // 获取查询的源数据
    ResultSetMetaData metaData = rs.getMetaData();
    // 获取查询的字段总数
    int columnCount = metaData.getColumnCount();
    for (int i = 0; i < columnCount; i++) {
    // 拿到每个字段的名称
    String columnLabel = metaData.getColumnLabel(i + 1);
    // 根据字段的名称获取对应的值
    Object object = rs.getObject(columnLabel);

                // 通过数据的属性名称获取到对应的对象的属性
                Field declaredField = cls.getDeclaredField(columnLabel);
                // 操作对应的属性,并且给指定的属性设置值
                declaredField.setAccessible(true); // 设置权限
                declaredField.set(t, object);
            }
        } catch (Exception e){
            e.printStackTrace();
        }
        return t;
    }
    

    通用的增删改方法设置
    public int editBase(String sql, Object... obj){
    // 1. 获取连接
    Connection conn = DBUtil.getConn();
    // 2. 预处理对象
    PreparedStatement ps = null;
    try{
    // 3. 实例化预处理对象
    ps = conn.prepareStatement(sql);
    // 4. 如果有参数则设置参数
    for (int i = 0; i < obj.length; i++) {
    ps.setObject(i + 1, obj[i]);
    }
    // 5. 执行sql语句
    return ps.executeUpdate();
    } catch (Exception e){
    e.printStackTrace();
    } finally{
    DBUtil.close(conn, ps);
    }
    return -1;
    }

  • 相关阅读:
    进程与线程
    闭包
    form表单提交
    让图片在div盒子中水平垂直居中
    第一个shell脚本——修改配置文件
    Linux系统find命令的常用方法
    Linux使echo命令输出结果带颜色
    Linux面试题
    无人值守批量安装
    Linux系统PXE高效批量网络装机的配置
  • 原文地址:https://www.cnblogs.com/1121cyy/p/14203058.html
Copyright © 2011-2022 走看看