MyBatis
入门
- SqlSessionFactoryBuilder
- SqlSessionFactory
- 运行期间一直存在。
- 不建议多次创建,最好使用单例 。
- SqlSession
- 每个线程都应该有自己的 SqlSession 实例。
- 不是线程安全的,因此不允许共享。
- mapper 映射器实例
- 通过 SqlSession 获得。
- 不需要关闭,用完即丢。
- TransactionManager
- DataSource
- namespace
- 利用更长的全限定名来将不同的语句隔离开来
- 接口绑定
- 命名解析:MyBatis 对所有具有名称的配置元素(包括语句,结果映射,缓存等)使用了如下的命名解析规则
- 全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
- 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如 “com.foo.selectAllThings” 和 “com.bar. selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名。
- 作用域(scope)和生命周期
- 依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器,并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。
XML 配置
properties 属性
优 先级从低到高
- properties 元素。
- 外部文件
- SqlSessionFactoryBuilder 的 build 方法传入的属性。
占位符的默认值
- 需要开启这个特性。
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
${username:root}username 未配置时, root 为默认值。<property name="username" value="${username:ut_user}"/>
- 如果在 SQL 映射中或者属性名中使用到了
:,就需要修改默认的占位符分隔符。<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/><property name="username" value="${db:username?:ut_user}"/>
settings 设置
typeAliases 类型别名
typeAliaspackage@Alias("blog)