MyBatis 之 Spring-boot 集成
引入 mybatis-spring-boot-starter
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
配置 application.yaml
yaml
mybatis:
mapper-locations: classpath*:/mapper/**/*.xml
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
然后,就可以使用啦。
核心类代码
java
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
try (SqlSession session = sqlSessionFactory.openSession()) {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
}
可见,SqlSessionFactory 是一个重要的类。
主要构件
SqlSession:作为 MyBatis 工作的主要顶层 API,表示和数据库交互的会话,完成必要数据库增删改查功能。
Executor:MyBatis 执行器,是 MyBatis 调度的核心,负责 SQL 语句的生成和查询缓存的维护。
StatementHandler:封装了 JDBC Statement 操作,负责对 JDBC statement 的操作,如设置参数、将 Statement 结果集转换成 List 集合。
ParameterHandler:负责对用户传递的参数转换成 JDBC Statement 所需要的参数。
ResultSetHandler:负责将 JDBC 返回的 ResultSet 结果集对象转换成 List 类型的集合。
TypeHandler:负责 java 数据类型和 jdbc 数据类型之间的映射和转换。
MappedStatement:维护了一条(select|update|delete|insert)节点的封装。
SqlSource:负责根据用户传递的 parameterObject,动态地生成 SQL 语句,将信息封装到 BoundSql 对象中,并返回。
BoundSql:表示动态生成的 SQL 语句以及相应的参数信息。
Configuration:MyBatis 所有的配置信息都维持在 Configuration 对象之中。