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是不是很方便。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。