| <?xml version="1.0" encoding="UTF-8" ?> | 
| <!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
| <!--namespace对应mapper接口所在的位置--> | 
| <mapper namespace="com.dy.pipIrrGlobal.daoDemo.DemoUserMapper"> | 
|     <resultMap id="userMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         <id property="id" column="id" /> | 
|         <result property="name" column="name"/> | 
|         <result property="password" column="password"/> | 
|         <result property="roleId" column="roleId"/> | 
|         <result property="disabled" column="disabled" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Disabled"/> | 
|         <result property="deleted" column="deleted" typeHandler="com.dy.common.mybatis.envm.EnumCodeTypeHandler" javaType="com.dy.common.mybatis.envm.Deleted"/> | 
|     </resultMap> | 
|   | 
|     <resultMap id="addressMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoAddress"> | 
|         <id property="id" column="id" /> | 
|         <result property="name" column="name"/> | 
|         <result property="userId" column="userId"/> | 
|     </resultMap> | 
|   | 
|     <resultMap id="userAddressMap1" extends="userMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         <association property="address" columnPrefix="addr_" resultMap="addressMap" /> | 
|     </resultMap> | 
|   | 
|     <resultMap id="userAddressMap2" extends="userMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         <association property="address" columnPrefix="addr_" resultMap="com.dy.pipIrrGlobal.daoDemo.DemoAddressMapper.addressMap" /> | 
|     </resultMap> | 
|   | 
|     <resultMap id="userAddressMap3" extends="userMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         <association property="address" column="{userId=id}" select="com.dy.pipIrrGlobal.daoDemo.DemoAddressMapper.selectByUserId" /> | 
|     </resultMap> | 
|   | 
|     <!-- fetchType="lazy" 还需要配置aggressiveLazyLoading=false --> | 
|     <resultMap id="userAddressMap4" extends="userMap" type="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         <association property="address" fetchType="lazy" column="{userId=id}" select="com.dy.pipIrrGlobal.daoDemo.DemoAddressMapper.selectByUserId" /> | 
|     </resultMap> | 
|   | 
|     <!-- 关联的嵌套结果映射,优点:数据库查询次数少,压力小,缺点:SQL复杂 --> | 
|     <select id="selectById1" resultType="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         select u.*, | 
|                adr.id "address.id", | 
|                adr.name "address.name", | 
|                adr.userId "address.userId" | 
|         from demo_user u | 
|         inner join demo_address adr on u.id = adr.userId | 
|         where u.id = #{id} | 
|     </select> | 
|   | 
|   | 
|     <!-- 关联的嵌套结果映射,优点:数据库查询次数少,压力小,缺点:SQL复杂 --> | 
|     <select id="selectById2" resultMap="userAddressMap1"> | 
|         select u.*, | 
|                adr.id addr_id, | 
|                adr.name addr_name, | 
|                adr.userId addr_userId | 
|         from demo_user u | 
|                  inner join demo_address adr on u.id = adr.userId | 
|         where u.id = #{id} | 
|     </select> | 
|   | 
|   | 
|     <!-- 关联的嵌套结果映射,优点:数据库查询次数少,压力小,缺点:SQL复杂 --> | 
|     <select id="selectById3" resultMap="userAddressMap2"> | 
|         select u.*, | 
|                adr.id addr_id, | 
|                adr.name addr_name, | 
|                adr.userId addr_userId | 
|         from demo_user u | 
|                  inner join demo_address adr on u.id = adr.userId | 
|         where u.id = #{id} | 
|     </select> | 
|   | 
|   | 
|   | 
|     <!-- 关联嵌套查询,优点:SQL简单,缺点:数据库可能查询多次数,压力大, --> | 
|     <select id="selectById4" resultMap="userAddressMap3"> | 
|         select u.* | 
|         from demo_user u | 
|         where u.id = #{id} | 
|     </select> | 
|   | 
|   | 
|     <!-- 关联嵌套查询,优点:SQL简单,缺点:数据库可能查询多次数,压力大, --> | 
|     <select id="selectById5" resultMap="userAddressMap4"> | 
|         select u.* | 
|         from demo_user u | 
|         where u.id = #{id} | 
|     </select> | 
|   | 
|     <!-- 第三方关联查询 --> | 
|     <select id="selectByRoleId" resultMap="userAddressMap4"> | 
|         select * from demo_user where roleId=#{roleId} | 
|     </select> | 
|   | 
|     <!--对应mapper接口方法public void insert(DemoUser user);--> | 
|     <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoDemo.DemoUser"> | 
|         insert into | 
|         demo_user (id, name, password, roleId, disabled, deleted) | 
|         values (#{id},#{name},#{password},#{roleId}, | 
|                 #{disabled, typeHandler=com.dy.common.mybatis.envm.EnumCodeTypeHandler, jdbcType=TINYINT}, | 
|                 #{deleted, typeHandler=com.dy.common.mybatis.envm.EnumCodeTypeHandler, jdbcType=TINYINT} | 
|                 ); | 
|     </insert> | 
|   | 
| </mapper> |