全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java连接MySQL数据库增删改查的通用方法(推荐)

运行环境:eclipse+MySQL

以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的。

我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了 数据库——MySQL——>Java篇

接下来我给大家讲讲如何将这个不可复用,又多重复的连接代码,封装起来,非常好用

基本思想:

我们连接数据库的时候,写的方法都是要一个个类 的去写,其中的方法不计其数,连接数据库都是需要:

Class.forName():加载驱动 ——》com.mysql.jdbc.Driver

DriverManager.getConnection():驱动管理,连接到数据库 三个属性1.数据库地址 2.数据库用户名 3.密码

createStatement():创建Statement对象

ResultSet:执行sql语句获得结果集,再遍历

那么我们为了能通用,那么其中的:数据库名,sql语句,遍历结果集要得到的结果,都是要根据不同数据库根据传入参数不同而变化的

首先每个项目开始前都要将数据库实体化,每个表都是一个实体类,表名是类名,字段为其属性,再用set和get方法这些属性

再根据反射机制,对象是我们表的实例化对象,根据我传入方法的这个参数对象,获取其中的方法,属性,属性值,类型等一系列的东西,来实现方法的封装通用

代码演示

先演示一个查询:通过传入这个表的实体类,通过一系列的放射机制,对比拼装成一个查询方法

public static List<Object> query(Class<?> obj) {
    Statement st=null;
    List<Object> list=new ArrayList<>();
    //数据库MySQL的地址
        String DBURL="jdbc:mysql://localhost:3306/lms_leave?useUnicode=true&characterEncoding=utf-8"; 
        String DBName="root"; //登入用户名
        String DBPwd="123456";//登入密码
        //加载驱动
        try {
          Class.forName("com.mysql.jdbc.Driver");
        //连接数据库
        Connection conn=DriverManager.getConnection(DBURL,DBName,DBPwd);
        //创建Statement对象
        st=conn.createStatement();
        ResultSet rs=st.executeQuery("select * from "+obj.getSimpleName());
        //获取传入类中的方法
        Method[] methods=obj.getMethods();
        //设置一个方法的list集合,下面将方法放入其中,以便调用
        List<Method> list_m= new ArrayList<>();
        //类中有许多方法,过滤一些方法,获取自己想要的方法
        for(int i=0;i<methods.length;i++){ //过滤方法
          //判断方法名字中是否有set这个提取
          if (methods[i].getName().contains("set")) {
            //将方法添加到list中
            list_m.add(methods[i]);
          }
        }
        //创建字符串string集合,获取下面的字段名存入
        List<String> fieldname=new ArrayList<>();
        //获取类中的属性,其属性对应数据库中的字段
        Field[]  f=obj.getDeclaredFields();
        //循环将字段中的名字首个变大写
        for (int i = 0; i < f.length; i++) {
          //获取名字
          String field=f[i].getName();
          //变大小写,存入fieldname集合
          fieldname.add(upperCase(field));
        }
        //获取得到结果集(rs)的结构,比如字段数、字段名等。
        ResultSetMetaData rsmd=  rs.getMetaData();
        //循环读取结果集中的数据添加到list集合中
        while (rs.next()) {
          //创建一个传入类对象user
          Object user=obj.newInstance();
          //遍历方法的集合
          for (Method m : list_m) {
            //遍历字段的集合
            for (int i = 0; i < f.length; i++) {
              //方法和字段作比较,查看方法名中是否含有这个字段名,两者匹配
              if (m.getName().contains("set"+fieldname.get(i))) {
                //匹配成功 ,则去得到rsmd去获取数据库中的字段名,rs.getObject,再根据获取的这个字段名去得到这个字段值
                Object value=rs.getObject(rsmd.getColumnName(i+1));
                //获取这个字段的类型,以便去储存这个值的类型
                Class<?> type=f[i].getType();
                //是int类型的转化
                if (type==int.class) {
                  value=new Integer(value.toString());
                }
                //string类型的转化
                if (type==String.class) {
                  value=value.toString();
                }
                //m是user对象中的方法,设置其值
                m.invoke(user, value);
              }
            }
          }
          //将的到的user对象实例添加到list集合中
          list.add(user);
        }
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
        return list;
  }

大家可以参考这个方法完全可以改装成剩余的插入,修改,删除

再给大家提示一下插入的方法封装重要的一点是,获取其中要插入的字段,根据插入语句拼接成一个完整的sql语句就可以完成

//m.invoke(user);我的理解是运行user类下的方法m,得到返回值
Object object=m.invoke(user);

这些东西需要自己多去思考总结,希望对大家有用,我就不多写了,留给大家一点思考的空间,需要剩下的方法封装可以留言告诉我

以上这篇Java连接MySQL数据库增删改查的通用方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# java数据库增删改查  # 详解Java数据库连接JDBC基础知识(操作数据库:增删改查)  # Java连接数据库  # 及增删改查的示例  # java 数据库连接与增删改查操作实例详解  # Java语言实现对MySql数据库中数据的增删改查操作的代码  # java jdbc连接mysql数据库实现增删改查操作  # 使用Java增删改查数据库的操作方法  # 都是  # 遍历  # 多个  # 字段名  # 连接数据库  # 类中  # 给大家  # 登入  # 数据库中  # 就可以  # 加载  # 我就  # 运行环境  # 我在  # 告诉我  # 不多  # 有许多  # 希望能  # 我给  # 写了 


相关文章: 如何快速搭建高效可靠的建站解决方案?  如何选择高效可靠的多用户建站源码资源?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  深圳网站制作案例,网页的相关名词有哪些?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  如何在橙子建站上传落地页?操作指南详解  如何零成本快速生成个人自助网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  建站主机如何选?性能与价格怎样平衡?  建站之星如何助力企业快速打造五合一网站?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何快速查询网站的真实建站时间?  如何选择服务器才能高效搭建专属网站?  如何在香港服务器上快速搭建免备案网站?  黑客入侵网站服务器的常见手法有哪些?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  网站设计制作企业有哪些,抖音官网主页怎么设置?  建站之星官网登录失败?如何快速解决?  详解jQuery中基本的动画方法  如何快速完成中国万网建站详细流程?  再谈Python中的字符串与字符编码(推荐)  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何用虚拟主机快速搭建网站?详细步骤解析  已有域名和空间,如何快速搭建网站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  中山网站制作网页,中山新生登记系统登记流程?  建站主机如何安装配置?新手必看操作指南  如何高效完成独享虚拟主机建站?  网页设计与网站制作内容,怎样注册网站?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  临沂网站制作公司有哪些,临沂第四中学官网?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  定制建站是什么?如何实现个性化需求?  如何在景安云服务器上绑定域名并配置虚拟主机?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何快速搭建高效服务器建站系统?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何通过虚拟主机空间快速建站?  建站主机默认首页配置指南:核心功能与访问路径优化  深入理解Android中的xmlns:tools属性  如何通过PHP快速构建高效问答网站功能?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何在服务器上配置二级域名建站?  网页设计网站制作软件,microsoft office哪个可以创建网页? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。