MyBatis
什么是 MyBatis?
- MyBatis 是一款优良的长久层(负责将数据保留到数据库的那一层代码)框架(半成品,感觉和自热饭差不多),是用于简化 JDBC 开发的。
- MyBatis 本是 Apache 的一个开源我的项目 iBatis,2010 年这个我的项目由 apache software foundation 迁徙到了 Google code,并改名为 MyBatis。2013 年 11 月迁徙到 Github。
一个新事物的呈现阐明这个新事物肯定领有旧事物没有的、不可比较的优越性,MyBatis 亦是如此。
JDBC 的毛病
首先咱们先举一个简略 JDBC 的例子。
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取链接
String url = "jdbc:mysql:///db1?useSSl=false;
String username = "root";// 数据库用户名称
String password = "1234";// 数据库明码
Connection conn = DriverManager.getConnection(url,username,password);
// 接管输出的查问条件
String gender = "男";
// 定义 sql
String sql = "select * from user where gender = ?"
// 获取 pstmt 对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 设置?的值
pstmt.setString(1,gender);
// 执行 sql
ResultSet rs = pstmt.executeQuery();
// 遍历 Result, 获取数据
User user = null;
ArrayList<User> 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);
}
可能有人会说这不是挺便捷的吗?从外表上来看如同是这么一回事,但当不难看出 JDBC 在其中存在不少问题
- 硬编码
-
注册驱动,获取连贯
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取链接
String url = "jdbc:mysql:///db1?useSSl=false;//db1 是要应用的数据库名
String username = "root";// 数据库用户名称
String password = "1234";// 数据库明码
Connection conn = DriverManager.getConnection(url,username,password);
-
SQL 语句
String gender = "男";
// 定义 sql
String sql = "select * from user where gender = ?"
- 操作繁琐
-
手动设置参数
// 获取 pstmt 对象
PreparedStatement pstmt = conn.prepareStatement(sql);
// 设置?的值
pstmt.setString(1,gender);
- 手动封装后果集
// 遍历 Result, 获取数据
User user = null;
ArrayList<User> 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 简化
- 将硬编码局部写到配置文件中
-
注册驱动,获取链接
<dataSource type="POOLED"> <!-- 数据库连贯信息 --> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///db1?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="1234"/> </dataSource>
咱们将这一部分写道 mybatis-config.xml 中,这样就不必在代码中再去写了,未来只有读取配置文件的参数信息值就能够了。
-
SQL 语句
<select id="selectByGender" parameterType="string" resultType="com.pojo.User">
select * from user where gender = #{gender};
</select>
- 将操作繁琐的局部主动实现
- 手动设置参数
- 手动封装后果集
List<User> users = sqlSession.selectList("test.selectByGender","男");
MyBatis 罢黜了简直所有的 JDBC 代码以及设置参数和获取后果集的工作,这样一看应用 MyBatis 是不是很不便。
官网文档 https://mybatis.net.cn/index….