mapper映射文件配置之select、resultMap、resultType

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

<mapper namespace="Command">
 
  <resultMap type="com.imooc.bean.Command" id="Command">
    <id column="C_ID" property="id"/>
    <result column="NAME" property="name"/>
    <result column="DESCRIPTION" property="description"/>
    <collection resultMap="Content" property="contentList"/>
  </resultMap>
  
  <resultMap type="com.imooc.bean.CommandContent" id="Content">
    <id column="ID" property="id"/>
    <result column="CONTENT" property="content"/>
    <result column="COMMAND_ID" property="commandId"/>
  </resultMap>
  
  <select id="queryCommandList" parameterType="com.imooc.bean.Command" resultMap="Command">
    select a.ID C_ID,a.NAME,a.DESCRIPTION,b.ID,b.CONTENT,b.COMMAND_ID from command a left join command_content b
    on a.ID=b.COMMAND_ID
    <where>
        <if test="name!=null and !&quot;&quot;.equals(name.trim())">
            and NAME=#{name}
        </if>
    
        <if test="description!=null and !&quot;&quot;.equals(description.trim())">
            and DESCRIPTION like '%' #{description} '%'
        </if>
    </where>
  </select>
 
</mapper>

select语句一般需要一个resultType或者resultMap属性,一般一对一映射时用resultType,而一对多时用resultMap

resultType:(1)表中字段和实体类中属性名完全对应,可以直接映射(2)通过select 字段 as(可省) 别名方式,使别名和实体类一致

select返回是实体类或实体类的列表,resultType都写实体类(包名+类名),或者在mybatis-config.xml文件中通过typeAliases标签配置实体类的简写

resultMap:上面的一段代码演示了一对多的配置,用的resultMap属性,通过一对多映射将字段值映射到实体类Command中,Command中又有contentList

猜你喜欢

转载自www.cnblogs.com/wangxiaochao/p/9312993.html