• 通用baseDao


    package com.springboot.layui.demo.jdbc.bean;
    
    import java.lang.reflect.Field;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.List;
    
    public class BaseDao {
        private  String Driver_NAME = "com.mysql.jdbc.Driver";//驱动类
        private  String URL = "jdbc:mysql://127.0.0.1:3306/stu";//数据库连接地址
        private  String USER = "root";//用户名
        private  String PASS = "";//密码 没有可以不写
    
        private  Connection conn = null;
        private  PreparedStatement ps = null;
        private  ResultSet rs = null;
    
        private  void close() throws Exception{
            if (rs!=null){
                rs.close();
            }
            if (ps!=null){
                ps.close();
            }
            if (conn!=null){
                conn.close();
            }
        }
         void getConn() {
            try {
                Class.forName(Driver_NAME);
                conn = DriverManager.getConnection(URL, USER, PASS);
            } catch (ClassNotFoundException e) {
                System.out.println("没有找到驱动类");
                e.printStackTrace();
            } catch (SQLException e) {
                System.out.println("创建连接错误");
                e.printStackTrace();
            }
        }
        public  int updateOrInsertOrDelete(String sql, Object... objects) throws Exception{
            getConn();
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < objects.length; i++) {
                ps.setObject(i+1, objects[i]);
            }
            int i = ps.executeUpdate();
            close();
            return i;
        }
    
        public  <T> List<T> findAll(String sql, Class<T> tClass, Object... objects) throws Exception {
            getConn();
            List<T> list = new ArrayList<>();
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < objects.length; i++) {
                ps.setObject(i + 1, objects[i]);
            }
            rs = ps.executeQuery();
            while (rs.next()) {
                T t = rsToBeas(tClass, rs);
                list.add(t);
            }
            close();
            return list;
        }
    
        private  <T> T rsToBeas(Class<T> tClass, ResultSet rs) throws Exception {
            T t = null;
            /*
                Demo demo=new Demo() == Demo demo=Demo.Class.newInstance()
                把类实例化出来
             */
            t = tClass.newInstance();
            ResultSetMetaData metaData = rs.getMetaData();//返回查询的源数据
            int columnCount = metaData.getColumnCount();//返回查询数据的字段数
            for (int i = 0; i < columnCount; i++) {
                String catalogName = metaData.getColumnLabel(i+1);//根据字段数返回字段名称
                Object object = rs.getObject(catalogName);//根据name获取字段数据
                Field field = tClass.getDeclaredField(catalogName);//利用反射得到实例化对象的属性这个属性,并且这个属性要和表的字段或者别名要一样才能赋值
                field.setAccessible(true);//设置权限
                field.set(t, object);//修改数据
            }
            return t;
        }
    }

    jdbc的通用dao只需要提供sql语句和参数就行了

  • 相关阅读:
    Python 如何计算当前时间减少或增加一个月
    删除 win8.1中的网络1,网络2,宽带连接1,宽带连接2等网络记录
    Office2003/2010等集成SP的简单方法
    win8.1点击“更改电脑设置”无反应(闪退)
    右键菜单添加带图标的Notepad++
    word2010无法打开文件时的一点对策
    在win7/8/10鼠标右键添加“管理员取得所有权”
    VisualSVNServer 无法启动 could not log pid to file
    半年来经销商云平台工作总结-后端
    半年来经销商云平台工作总结-前端
  • 原文地址:https://www.cnblogs.com/JpfBlog66/p/13955545.html
Copyright © 2020-2023  润新知