MyBatis笔记(1)-基本配置和Mapper XML配置
主要对象的 Scope 和 Lifecycle
对象 | Scope | Lifecycle | 备注 |
---|---|---|---|
SqlSessionFactoryBuilder | 方法 | 读取完配置,创建完 SqlSessionFactory 销毁 | N/A |
SqlSessionFactory | 应用全局 | 始终存在 | 单例实现 |
SqlSession | 单次请求或方法 | 请求完成或方法执行完成关闭 | 确保使用完后关闭(close) |
MyBatis 配置
properties
- 使用外部
properties
配置文件
1 | <properties resource="org/mybatis/example/config.properties"> |
settings
MyBatis
的基本配置
1 | <settings> |
typeAliases
- 类型别名
1 | <typeAliases> |
1 |
|
typeHandlers
- TODO
Handling Enums
- EnumTypeHandler
- EnumOrdinalTypeHandler
objectFactory
- 自定义对象工厂
plugins
- 拦截器
environments
- 多种环境不同数据库(test, stage, production)
- 一个
SqlSessionFactory
实例对应一个数据库
1 | <environments default="development"> |
transactionManager
- JDBC
- MANAGED
dataSource
- UNPOOLED
- POOLED (常用)
- JNDI
注意点
- 配置
poolPing
防止数据库单方面切断连接
- 配置
databaseIdProvider
- 多数据库支持
1 | <databaseIdProvider type="DB_VENDOR"> |
mappers
1 | <!-- Using classpath relative resources --> |
Mapper XML 配置文件
select
- 示例
1 | <select id="selectPerson" parameterType="int" resultType="hashmap"> |
- 属性
1 | <select |
insert, update 和 delete
- 示例
1 | <insert id="insertAuthor"> |
- 属性
1 | <insert |
- 主键的自动生成
1 | <insert id="insertAuthor" useGeneratedKeys="true" |
sql
- 用于创建可重用的
sql
语句片段 - 示例
1 | <sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql> |
1 | <sql id="sometable"> |
Parameters
Result Maps
- constructor
1 | <constructor> |
association (“has-one” type relationship)
1 | <association property="author" javaType="Author"> |
- Nested Select for Association
1 | <resultMap id="blogResult" type="Blog"> |
- Nested Results for Association (外连接)
1 | <resultMap id="blogResult" type="Blog"> |
或
1 | <resultMap id="blogResult" type="Blog"> |
collection
1 | <collection property="posts" ofType="domain.blog.Post"> |
- Nested Select for Collection
1 | <resultMap id="blogResult" type="Blog"> |
- Nested Results for Collection
1 | <resultMap id="blogResult" type="Blog"> |
或
1 | <resultMap id="blogResult" type="Blog"> |
discriminator
1 | <discriminator javaType="int" column="draft"> |
cache
- 开启二级缓存
1 | <cache/> |
- 二级缓存属性配置
1 | <cache |
- cache-ref
1 | <cache-ref namespace="com.someone.application.data.SomeMapper"/> |