【MyBatis】P1 MyBatis 怎样简化的 JDBC
创始人
2025-05-30 09:15:40
0

MyBatis 怎样简化的 JDBC

  • MyBatis 作用
    • 简化JDBC开发
      • 完整JDBC代码
      • 硬编码
      • 操作繁琐
  • MyBatis 简化思路
    • 配置文件
    • 自动完成


MyBatis 作用

MyBatis 是一个 持久层 框架,用于 简化JDBC开发

持久层:即负责将数据保存到数据库的那一层代码;

框架:半成品软件,可重用、通用的、软件基础代码模型;

简化JDBC开发:JDBC存在 硬编码操作繁琐 的缺点;


简化JDBC开发

JDBC存在 硬编码操作繁琐 的缺点;

完整JDBC代码

// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取Connection连接
String url = "jdbc:mysql:///db1?useSSL=false";
String uname = "root";
String pwd="1234";
// 接收输入的查询条件
String gender = "男";
// 定义sql
String sql = "select * from tb_user where gender = ?";
// 获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//设置?的值
pstmt.setString(1,gender);
// 执行sql
ResultSet rs = pstmt.executeQuery();
// 遍历Result,获取数据
User user = null;
ArrayList users = new ArrayList<>();
while (rs.next()){// 获取数据int id = rs.getInt("id");String username = rs.getString("username");String password = rs.getString("password");// 创建对象,设置属性值user = new User();user.setId(id);user.setUsername(username);user.setPassword(password);user.setGender(gender);//装入集合users.add(user);
}

硬编码

上述代码中,注册驱动以及获取连接部分,有很多将字符串信息写到代码中去,即为 硬编码

// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取Connection连接
String url = "jdbc:mysql:///db1?useSSL=false";
String uname = "root";
String pwd="1234";

而若我们对字符串信息发生变动,比如更改密码等,我们就需要改动编码,然后重新编译,重新打包,重新运行;如此来看,代码维护性相当差。

包括下述 sql语句部分,我们会频繁改动sql语句:

// 接收输入的查询条件
String gender = "男";
// 定义sql
String sql = "select * from tb_user where gender = ?";

每一次的改动都意味着大量的任务量。


操作繁琐

而在后续的 手动设置参数手动封装结果集 部分,JDBC的操作也是相当的繁琐。

手动设置参数:

// 获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//设置?的值
pstmt.setString(1,gender);

手动封装结果集:

// 遍历Result,获取数据
User user = null;
ArrayList users = new ArrayList<>();
while (rs.next()){// 获取数据int id = rs.getInt("id");String username = rs.getString("username");String password = rs.getString("password");// 创建对象,设置属性值user = new User();user.setId(id);user.setUsername(username);user.setPassword(password);user.setGender(gender);//装入集合users.add(user);
}

MyBatis 简化思路

配置文件

针对JDBC中 硬编码 问题,MyBatis 通过将字符串写到 配置文件 中;

针对 注册驱动以及获取连接部分 配置信息案例:




针对 sql语句部分 配置信息案例:



自动完成

针对JDBC中 操作繁琐 问题,MyBatis 尝试 自动完成

List users = sqlSession.selectList("test.selectByGender", "男")

一行代码搞定 手动设置参数手动封装结果集 部分;


相关内容

热门资讯

太平洋货轮仍在燃烧,3000辆... 太可怕了,一场大火,3000辆汽车灰飞烟灭,再一次引发了人们对电动汽车的讨论。当地时间6月3日,美国...
东莞之变:从桃色之城到全球最大... 你知道东莞这座城市,被误解得有多深吗?事实上,东莞既是我国最重要的制造业基地之一,作为出口大城,属于...
逐渐陌生的娃哈哈 逐渐陌生的娃... 文丨文雨2024年2月25日,娃哈哈集团创始人、一代浙商传奇宗庆后与世长辞。从那以后,围绕他所创立的...
75岁董事长和北大教授隔空对战... 北大学者与千亿药企掌门的麦角硫因之争。作者 | 刘钦文编辑丨高 岩来源 | 野马财经一场由生物学家与...
一觉醒来,重启对我国经贸关系,... 美方态度还没定,这个节骨眼上,英国直接竟转向东方了?近日,英方突然抛出一则重磅政策:计划对多达89类...
没有中国稀土,一些海外汽车厂开... 由于中国限制稀土出口导致零部件短缺,一些海外汽车制造商不得不停止某些车型的生产。第一家受中国出口管制...
“一娃难求”,泡泡玛特CRYB... 红星资本局6月7日消息,近日,泡泡玛特旗下的CRYBABY(下称“哭娃”)IP持续走红,新系列线上线...
楼市,新信号! 楼市,新信号!... 原创 刘晓博6月6日,《深圳市提振消费专项行动实施方案》的全文向社会发布。这里面有一个重要的表述,值...
“618”物流战升级,淘宝天猫... “618”大促正酣,电商和物流领域传来重磅合作消息。6月5日,淘宝天猫和顺丰速运联合宣布,正式达成官...
“潜龙杯”管理人风采巡展「第1... “潜龙杯”风采巡展首期,世纪前沿闪耀登场,量化先锋,全频段布局!更多优秀私募风采敬请期待。
亚振家居:实控人吴涛拟要约收购... 6月6日,亚振家居(603389.SH)公告,公司实控人吴涛发起要约收购,收购的对象为收购人及其一致...
“吃不动”的桃李面包 吃不动的... 如何让消费者“吃得动”?“面包第一股”的增长剧本,为何正在急转直下?作为中国食品工业化的代表性样本,...
国轩高科:与巴斯夫、中国燃气及... 国轩高科(002074.SZ)最新宣布,2025 年上海碳中和博览会期间,公司与巴斯夫、中国燃气控股...
沈阳18栋别墅400万起拍,被... 红星资本局6月7日消息,近日,沈阳市苏家屯区的18栋别墅在阿里资产·司法页面进行拍卖,起拍价为399...
国联民生合并后架构调整:集中聘... 国联民生证券股份有限公司(下称“国联民生”,601456.SH,01456.HK)合并更名后一口气任...
中信证券:算力长期需求持续,龙... 新京报贝壳财经讯 中信证券6月7日发布的报告指出,算力产业围绕英伟达链和ASIC链的投资机会维持高景...
新浪出手,10元盖饭“整顿”穷... 作者 |餐饮老板内参内参君“浪”来了餐饮行业,又迎来一位重磅“后浪”,“新浪”。去年中旬左右,一家名...
万科再获深铁“输血”30亿 年... 新京报贝壳财经讯 6月6日晚,万科企业股份有限公司(简称“万科”)发布一则重磅公告,其第一大股东深圳...
猫鼠游戏:中国作弊与反作弊简史... 今天是6月7日,全国高考首日。想象一下这样的场景:晨光熹微,上千万中国学子怀揣梦想与忐忑,步入一个堪...
这家千亿养老保险公司,为什么成... 文丨金融八卦女特约作者:铁马· ··都说年轻人可以没有对象,但是必须有搭子。生活中的“搭子”,主打一...