目录
8、数据库厂商标识:databaseIdProvider(一般不用)
1、属性:properties
和spring的context : placeholder一样的,引用外部配置文件
<!--
resource:从类路径下开始引用
url:引用磁盘路径或者网络路径的资源
-->
<properties resource="" url=""/>
引用使用${}
2、设置:settings
MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为
3、类型别名:typeAliases(推荐不用)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写
别名默认就是类名(不区分大小写),这样配置文件中就可以使用别名了。
可以用alias指定别名
<typeAliases>
<typeAlias alias="Book" type="com.bookStore.bean.Book"/>
</typeAliases>
可以批量起别名,com.bookStore.bean包下的所有类都自动使用类名作为别名(不区分大小写)
<typeAliases>
<package name="com.bookStore.bean"/>
</typeAliases>
也可以使用注解@Alias
@Alias("author")
public class Author {
...
}
4、类型处理器:typeHandlers
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。
从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。
5、对象工厂:objectFactory(一般没人使用)
每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现。
6、插件:plugins
Mybatis里非常强大的机制
MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
- ParameterHandler (getParameterObject, setParameters)
- ResultSetHandler (handleResultSets, handleOutputParameters)
- StatementHandler (prepare, parameterize, batch, update, query)
我们可以通过插件来修改Mybatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。
7、环境配置:environments
environments:配置环境们;
environment:配置一个具体的环境,都需要一个事务管理器和一个数据源
<!--default:默认使用哪一个环境-->
<environments default="testDevelopment">
<!--id="testDevelopment"是当前环境的唯一标识-->
<environment id="testDevelopment">
<transactionManager type="JDBC"/>
<!--配置数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${dataSource.driver}"/>
<property name="url" value="${dataSource.url}"/>
<property name="username" value="${dataSource.username}"/>
<property name="password" value="${dataSource.password}"/>
</dataSource>
</environment>
</environments>
后来的数据源和事务控制都是spring来做(使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置)
8、数据库厂商标识:databaseIdProvider(一般不用)
Mybatis用来考虑数据库移植性。
<!--type="DB_VENDOR写死的-->
<databaseIdProvider type="DB_VENDOR">
<!--
name:数据库厂商标识
value:给这个标识起一个好用的名字
-->
<property name="MYSQL Server" value="mysql"/>
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
使用
<insert id="insertBook" databaseId="mysql">
INSERT INTO book(ISBN,bookName,author,price) VALUES(#{ISBN},#{bookName},#{author},#{price})
</insert>
<insert id="insertBook" databaseId="oracle">
.......
</insert>
如果能精确匹配,就精确,不能就使用模糊。
一般在项目初期,就确定数据库的,所以一般不会用到。
9、映射器:mappers
写好的sql映射文件,需要使用mappers注册进来
建议注解和xml配置混合使用,重要的sql使用配置,简单的,基础的使用注解。
<!--
resource:在类路径下找sql映射文件(用的多)
class:直接引用接口的全类名(将xml放在和Dao接口同目录下,并且文件名和接口一致)
class的另一种用法:使用注解(不推荐使用,耦合性太高)
url:从磁盘或者网络路径引用(用的少)
-->
<mappers>
<mapper resource=""/>
<mapper class=""/>
<mapper url=""/>
</mappers>
批量注册:配置文件必须和接口放在一个文件夹中且同名
<mappers>
<!--name:dao所在的包名-->
<package name="com.bookStore.dao"/>
</mappers>