Java复习 - MyBatis 快速入门
简介
什么是 MyBatis
MyBatis 是一个使用 Java 编写的持久层框架。它封装了 JDBC 操作的很多细节,使开发者只需要关注 sql 语句,而无需关注注册驱动、创建连接、创建 Statement 等繁杂的过程。 使用了 ORM
的思想,屏蔽的 JDBC api
底层细节,实现了对结果集的封装。
三层架构
- 表现层:展示数据
- 业务层:处理业务需求
- 持久层:和数据库交互
持久化
- 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
- 内存:断电即失
为什么需要 MyBatis
- 传统
JDBC
太复杂了,简化形成框架 SQL
和代码分离,提高了可维护性
持久层技术解决方案
- JDBC
- Spring 和 JdbcTemplate
- Apache 的 DBUtils
传统 JDBC
1 | public static void main(String[] args) { |
MaBatis 上手
步骤:搭建环境 –> 导入 MaBatis –> 编写代码 –> 测试
搭建环境
创建数据库
1
2
3
4
5
6
7
8
9
10CREATE DATABASE mybatis;
CREATE TABLE `user`(
id int PRIMARY KEY,
username VARCHAR(10),
password VARCHAR(10)
);
INSERT INTO `user` VALUES(1,'admin','admin123');
INSERT INTO `user` VALUES(2,'root','root123');创建 maven 项目
导入 maven 依赖(
pom.xml
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30<dependencies>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
</dependencies>开始编写代码
编写核心配置文件(
resources/mybatis-config.xml
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!--核心配置文件-->
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 每个 Mapper.xml 都要注册在 MyBatis 核心配置文件中-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>在
resources
下创建mapper/UserMapper.xml
1
2
3
4
5
6
7
8
<mapper namespace="cn.imzjw.mybatis.mapper.UserMapper">
</mapper>编写 Mabatis 工具类(
cn.imzjw.mybatis.utils.MybatisUtils.java
)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33/**
* sqlSessionFactory生产sqlSession
*
* @author https://blog.imzjw.cn
* @date 2020/12/23 13:42
*/
public class MybatisUtils {
/**
* 提升作用域
*/
private static SqlSessionFactory sqlSessionFactory;
static {
// 使用MaBatis第一步,获取sqlSessionFactory对象
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 既然有了SqlSessionFactory,就可以从中获得sqlSession实例。
* sqlSession完全包含了面向数据库执行SQL命令所需要的所有方法
*
* @return
*/
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}创建实体类(
cn.imzjw.mybatis.entity.User.java
)1
2
3
4
5
6
7
8
9
10
11
12/**
* @author https://blog.imzjw.cn
* @date 2020/12/23 14:09
*/
public class User {
private int id;
private String username;
private String password;
}mapper 接口(
cn.imzjw.mybatis.mapper.UserMapper.java
)1
2
3public interface UserMapper {
List<User> getUserList();
}接口实现类(
resources/mapper/UserMapper.xml
)1
2
3
4
5
6
7
8
9
10
11
12
13
<mapper namespace="cn.imzjw.mybatis.mapper.UserMapper">
<!--select查询语句-->
<select id="getUserList" resultType="cn.imzjw.mybatis.entity.User">
SELECT * FROM `user`
</select>
</mapper>
测试
在 test
文件下编写测试类(test/java/TestMybatis.java
)
1 | /** |
得到结果
1 | User(id=1, username=admin, password=admin123) |
其它问题
如果出现以下异常
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find
请在 pom.xml
最后加入资源过滤,没异常就忽略
1 | <build> |
我的 pom.xml
完整代码
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小嘉的部落格!
评论