
<configuration>元素是配置文件的根元素,其他元素都要在<configuration>元素内配置。
<properties>是一个配置属性的元素,该元素通常用来将内部的配置外在化,即通过外部的配置来动态的替换内部定义的属性。
<propertiesresource="db.properties" /><settings>元素主要用于改变MyBatis运行时的行为,例如开启二级缓存、开启延迟加载等。
<!-- 设置 --><settings><settingname="cacheEnabled"value="true" /><settingname="lazyLoadingEnabled"value="true" /></settings>
<typeAliases>元素用于为配置文件中的Java类型设置一个简短的名字,即设置别名。
使用<typeAliases>元素配置别名的方法如下:
<typeAliases><typeAlias alias="user" type="com.po.User"/></typeAliases>
当POJO类过多时,可以通过自动扫描包的形式自定义别名,具体如下:
<typeAliases><packagename="com.po"/></typeAliases>
typeHandler的作用就是将预处理语句中传入的参数从javaType(Java类型)转换为jdbcType(JDBC类型),或者从数据库取出结果时将jdbcType转换为javaType。
注册一个类的类型处理器
<typeHandlers><typeHandlerhandler="com.type.CustomtypeHandler" /></typeHandlers>
注册一个包中所有的类型处理器
<typeHandlers><packagename="com.type" /></typeHandlers>
MyBatis中默认的ObjectFactory的作用是实例化目标类,它既可以通过默认构造方法实例化,也可以在参数映射存在的时候通过参数构造方法来实例化。
<plugins>元素的作用就是配置用户所开发的插件。
在MyBatis的核心配置文件中,MyBatis通过<environments>元素定义一个运行环境。
<environments>元素有<transactionManager>和<daraSource>元素。
<transactionManager>元素用于配置运行环境的事务管理器。
<dataSource>元素用于配置运行环境的数据源信息。
<propertiesresource="db.properties" /><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC" /><dataSourcetype="POOLED"><propertyname="driver"value="${jdbc.driver}" /><propertyname="url"value="${jdbc.url}" /><propertyname="username"value="${jdbc.username}" /><propertyname="password"value="${jdbc.password}" /></dataSource></environment></environments>
<mappers>元素用于引入MyBatis映射文件。
映射文件包含了POJO对象和数据表之间的映射信息,MyBatis通过核心配置文件中的<mappers>元素找到映射文件并解析其中的映射信息。
一般可以使用以下4种方法引入映射器文件,具体如下:
使用类路径引入
<mappers><mapperresource="com/mapper/UserMapper.xml"/></mappers>
使用本地文件路径引入
<mappers><mapperurl="file:///D:/com/mapper/UserMapper.xml"/></mappers>
使用接口类引入
<mappers><mapperclass="com.mapper.UserMapper"/></mappers>
使用包名引入
<mappers><packagename="com.mapper"/></mappers>
在映射文件中,<mapper>元素是映射文件的根元素,其他元素都是它的子元素。

1、<mapper>元素
<mapper>元素中的namespace属性作用 :
用于区分不同的mapper,全局唯一。
绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的全限定名查找到对应的mapper配置来执行SQL语句,因此namespace的命名必须跟接口同名。
<mapper>元素如何区别不同的XML文件?
在不同的映射文件中,<mapper>元素的子元素的id可以相同,MyBatis通过<mapper>元素的namespace属性值和子元素的id联合区分不同的Mapper.xml文件。接口中的方法与映射文件中SQL语句id应一一对应。
2、<select>元素
<select>元素用来映射查询语句,它可以从数据库中读取出数据,并组装数据给开发人员。
<select id="findCustomerById" parameterType="Integer"resultType="com.po.Customer">select * from t_customer where id = #{id}</select>
常用属性说明:

3、<insert>元素
<insert>元素用于映射插入语句,在执行完<insert>元素中定义的SQL语句后,会返回一个表示插入记录数的整数。
<insert>元素的配置示例如下:
<insertid="addCustomer"parameterType="com.po.Customer"flushCache="true"statementType="PREPARED"keyProperty=""keyColumn=""useGeneratedKeys=""timeout="20">
<insert>元素的属性与<select>元素的属性大部分相同,但还包含了3个特有属性,这3个属性的描述如下所示。

4、<update>元素
<update>元素用于映射更新语句,它可以更新数据库中的数据。在执行完元素中定义的SQL语句后,会返回更新的记录数量。
<update id="updateCustomer" parameterType="com.po.Customer">update t_customerset username=#{username},jobs=#{jobs},phone=#{phone}where id=#{id}</update>
5、<delete>元素
<delete>元素用于映射删除语句,在执行完<delete>元素中的SQL语句之后,会返回删除的记录数量。
<delete id="deleteCustomer" parameterType="Integer">delete from t_customer where id=#{id}</delete>
6、<sql>元素
<sql>元素的作用是定义可重用的SQL代码片段,然后在其他语句中引用这一代码片段。
定义一个包含id、username、jobs和phone字段的代码片段如下:
<sql id="customerColumns">id,username,jobs,phone</sql>
上述代码片段可以包含在其他语句中使用,具体如下:
<select id="findCustomerById" parameterType="Integer"resultType="com.po.Customer">select <include refid="customerColumns"/>from t_customerwhere id = #{id}</select>
7、<resultMap>元素
<resultMap>元素表示结果映射集,主要作用是定义映射规则、级联的更新以及定义类型转化器等。
<resultMap>元素中包含了一些子元素,它的元素结构如下所示:
<resultMaptype=""id=""><constructor> <!-- 类在实例化时,用来注入结果到构造方法中--><idArg/> <!-- ID参数;标记结果作为ID--><arg/> <!-- 注入到构造方法的一个普通结果--></constructor><id/> <!-- 用于表示哪个列是主键--><result/> <!-- 注入到字段或JavaBean属性的普通结果--><associationproperty="" /> <!-- 用于一对一关联 --><collectionproperty="" /> <!-- 用于一对多关联 --><discriminatorjavaType=""> <!-- 使用结果值来决定使用哪个结果映射--><casevalue="" /> <!-- 基于某些值的结果映射 --></discriminator></resultMap>
仅用于交流学习!
夜雨聆风