<?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>
|