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

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


相关内容

热门资讯

海南封关,远比你想象的重要 作 者:豆汁儿来 源:正和岛(ID:zhenghedao)翻开中国改革开放的日历,12月18日这个日...
浙江百亿富豪,刚刚拿下一个IP... 12月17日,被誉为“香港数字资产第一股”的HashKey,正式登陆港交所。盘面上,HashKey开...
约基奇39+15+10申京33... 【搜狐体育战报】北京时间12月16日NBA常规赛,主场作战的掘金以128-125加时击败火箭,掘金取...
终止收购后,梦天家居股价逆势翻... 终止收购知名芯片公司川土微之后,梦天家居(603216.SH)的股价却逆向飙涨。记者梳理发现,尽管明...
中国最“逆袭”小镇:人口不足3... 作 者:正理正和岛案例研究中心特约研究员来 源:正和岛(ID:zhenghedao)珍珠是蚌类(软体...
1679套房源扎堆入市!三大央... 近日,上海市网上房地产官网发布公告,16个住宅项目即将入市,涵盖黄浦、徐汇、杨浦、浦东、普陀等区域,...
追讨工程款!一建工公司新增14... 因多笔工程款项被拖欠,安徽建工(SH600502,股价4.64元,市值80亿元)及其子公司正通过法律...
中一签赚近30万!沐曦上市首日... 12月17日,GPU厂商沐曦股份(688802.SH)在科创板上市。本次沐曦发行价格104.66 元...
快速过会背后 慧谷新材还有哪些... 独立 稀缺 穿透扬长避短、攻坚克难!作者:张戈编辑:陈晨风品:李莉来源:铑财——铑财研究院12月9日...
注册资本超百亿!贵州农商联合银... 国家金融监督管理总局贵州监管局近日发布批文,宣布贵州农村商业联合银行(下称“贵州农商联合银行”)正式...