1.核心配置文件 sqlMapConfig.xml 其dtd约束位于org.apache.ibatis.builder.xml包下
<!-- 配置文件root标签(configuration) -->
<configuration>
<!-- 自定义key-value -->
<!--
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
</properties>
-->
<!-- resource 用于加载classpath下的properties文件
url 用于加载指定路径的properties文件
在页面使用:${属性名} 例:${driver} 则取到的值为 com.mysql.jdbc.Driver
-->
<properties resource="db.properties"></properties>
<!-- properties加载顺序
1.先读取properties元素体内定义的key-value
2.再读取properties元素resource或url属性中的key-value
3.最后读取parameterType(在Mapper.xml中)上的属性
后读取的会覆盖先读取的,因此在properties标签中的属性key要有特殊性(防止覆盖)
-->
...
</configuration>
注:以下的标签都在root标签内部,将省略configuration标签
<!-- 别名标签 用于将复杂的类型全限定名,映射为简单名称 (可用于Mapper文件中)
存储映射关系的类为:org.apache.ibatis.type.TypeAliasRegistry (内部维护HashMap<String, Class<?>>)
-->
<typeAliases>
<!-- 单独映射
type:类的全限定名
alias:别名
以后别名String 就代表 java.lang.String类
-->
<typeAlias type="java.lang.String" alias="String"/>
<!-- 批量映射
name:包名
mybatis会根据包名自动扫描其下的所有类,并自动生成别名
在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名
源码在TypeAliasRegistry类中的registerAlias方法
-->
<package name="com.pzhx.pojo"/>
</typeAliases>
<!-- plugins 用于指定拦截器类,以实现对mybatis的某些方法的拦截
默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
ParameterHandler (getParameterObject, setParameters)
ResultSetHandler (handleResultSets, handleOutputParameters)
StatementHandler (prepare, parameterize, batch, update, query)
使用插件是非常简单的,只需实现 Interceptor 接口,并指定了想要拦截的方法签名即可。
-->
<plugins>
<plugin interceptor="com.pzhx.dao.interceptor.SclectInterceptor"></plugin>
</plugins>
<!-- MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。
默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。
如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现(需要实现ObjectFactory接口)。(可继承其默认实现类DefaultObjectFactory)
type:类全限定名
-->
<objectFactory type="">
<property name="" value=""/>
</objectFactory>
<!-- mybatis运行 全局配置参数 它们会改变 MyBatis 的运行时行为
设置过程在org.apache.ibatis.builder.xml.XMLConfigBuilder类中的settingsElement方法
-->
<!--
<settings>
<setting name="" value=""/>
</settings>
-->
<!-- 运行配置开发环境,可以配置多个,在具体用时再做切换 但每个 SqlSessionFactory实例只能选择其一
与spring整合时,会将事务管理和数据源交给spring管理
-->
<environments default="test">
<environment id="test">
<!-- 事务管理类型:JDBC、MANAGED -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源类型:POOLED、UNPOOLED、JNDI -->
<dataSource type="POOLED">
<property name="driver" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</dataSource>
</environment>
</environments>
<!-- 类型处理器 完成jdbc类型和java类型的转换
一般不需要定义,mybatis提供了丰富的类型处理器提供使用
handler:类型处理器类,必须实现TypeHandler接口,可继承BaseTypeHandler抽象类来简化开发
javaType:java类型
jdbcType:jdbc类型
-->
<!--
<typeHandlers>
<typeHandler handler="" javaType="" jdbcType=""/>
</typeHandlers>
-->
<!-- 加载映射文件 mapper -->
<mappers>
<!-- 路径用 斜线(/) 分割,而不是用 点(.) -->
<!-- 单个映射文件加载(resource相对于类路径,url相对于全路径)
<mapper resource="com/pzhx/mapper/*.xml"></mapper>
<mapper url="c:/com/pzhx/mapper/*.xml"></mapper>
-->
<!-- 通过mapper代理加载
规范:需要将mapper接口的类名和mapper.xml映射文件名保持一致,且要在同一个目录中
class:类全限定名
package会批量加载指定包下的mapper类(也需要满足以上规范)
-->
<mapper class=""/>
<package name="com.pzhx.mapper"/>
</mappers>