运行环境: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增删改查数据库的操作方法
# 都是
# 遍历
# 多个
# 字段名
# 连接数据库
# 类中
# 给大家
# 登入
# 数据库中
# 就可以
# 加载
# 我就
# 运行环境
# 我在
# 告诉我
# 不多
# 有许多
# 希望能
# 我给
# 写了
相关文章:
如何用5美元大硬盘VPS安全高效搭建个人网站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
建站之星代理如何优化在线客服效率?
网站制作说明怎么写,简述网页设计的流程并说明原因?
已有域名如何快速搭建专属网站?
Swift中循环语句中的转移语句 break 和 continue
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
黑客入侵网站服务器的常见手法有哪些?
已有域名和空间,如何快速搭建网站?
建站主机无法访问?如何排查域名与服务器问题
如何快速搭建高效可靠的建站解决方案?
如何选择可靠的免备案建站服务器?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
如何在云虚拟主机上快速搭建个人网站?
建站主机SSH密钥生成步骤及常见问题解答?
电商网站制作公司有哪些,1688网是什么意思?
css网站制作参考文献有哪些,易聊怎么注册?
再谈Python中的字符串与字符编码(推荐)
如何在建站宝盒中设置产品搜索功能?
股票网站制作软件,网上股票怎么开户?
如何制作算命网站,怎么注册算命网站?
如何在Golang中使用encoding/gob序列化对象_存储和传输数据
C++用Dijkstra(迪杰斯特拉)算法求最短路径
黑客如何利用漏洞与弱口令入侵网站服务器?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
制作网站怎么制作,*游戏网站怎么搭建?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何在IIS中新建站点并配置端口与IP地址?
如何在Windows服务器上快速搭建网站?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
深圳网站制作的公司有哪些,dido官方网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
测试制作网站有哪些,测试性取向的权威测试或者网站?
,购物网站怎么盈利呢?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
网站制作的步骤包括,正确网址格式怎么写?
建站主机如何选?性能与价格怎样平衡?
建站之星安装后如何自定义网站颜色与字体?
如何选择高效稳定的ISP建站解决方案?
如何用虚拟主机快速搭建网站?详细步骤解析
C++时间戳转换成日期时间的步骤和示例代码
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何在香港免费服务器上快速搭建网站?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
已有域名能否直接搭建网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
*请认真填写需求信息,我们会在24小时内与您取得联系。