【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", "男")

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


相关内容

热门资讯

沪深两市成交额突破1万亿,较上... 7月7日消息,数据显示,沪深两市成交额突破1万亿,较上一日此时缩量超2700亿,预计全天成交金额近2...
2026世界人工智能大会各项筹... 7月7日消息,从今日举行的上海市新闻发布会上获悉,2026世界人工智能大会暨人工智能全球治理高级别会...
有机硅概念反复活跃,晨光新材直... 7月7日消息,有机硅概念反复活跃,晨光新材直线涨停,东岳硅材涨超10%,硅宝科技、合盛硅业、润禾材料...
深成指、创业板指双双跌逾1%,... 7月7日消息,指数走弱,深成指下挫跌逾1%,沪指跌0.92%,创业板指跌1.01%,化纤、贵金属、医...
联合国官员:希望通过对话为人工... 7月7日消息,首届全球人工智能治理对话当地时间6日在瑞士日内瓦举行,约1500名来自世界各地的代表将...
机器人概念股开盘拉升 巨轮智能、多利科技直线涨停,肇民科技涨超10%,汉宇集团、百达精工跟涨。
前华为“天才少年”公开吐槽De... 7月6日,前华为“天才少年”李博杰在社交平台公开吐槽DeepSeek的面试流程,提及流程较慢且繁琐,...
特朗普称已就美国队球员红牌判罚... 当地时间6日,美国总统特朗普表示,他已就“红牌”问题与国际足联主席因凡蒂诺进行了交谈。 特朗普表示,...
下半年,铜还能杀回来吗? 下半... 文丨小李飞刀2026年上半年,A股市场风格极为撕裂——科创50指数大涨64%,上证50指数反而下跌1...
俊发地产曝3亿信托不良债权1.... ◎ 来源 | 地产密探(ID:real-estate-spy)楼市深调5年,房地产金融风险正在加速出...