原创

关于Mybatis一对多自定义resultMap

1Mybatis自定义resultMap

1.1假设有2张表

user表

int id;
String name;
int age;

score表 (成绩表)

int id;
int user_id;  // 关联user表字段
String subject; // 科目
String score; // 分数

1.2 然后自定义查询结果 resultMap

/**
 *  resultMap中参数解释
 *       id : 在写xml中写sql时候,返回标识 
 *       type : 接收查询结果的实体类
 *       result  : 数据库映射字段
 *       property  : 实体类映射字段
 *       collection   : 简单理解成是可以放很多条记录的一个容器,比较典型应用就是主表和子表 这里就是当做一对多来使用
 *       ofType   : 这个容器用什么实体类来接收
 */
<resultMap id="scoreResult" type="com.linn.vo.UserVO">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="intro" property="age"/>
        <collection property="scoreVOList" ofType="com.linn.vo.ScoreVO">
            <result column="id" property="id" />
            <result column="subject" property="subject" />
            <result column="score" property="score" />
        </collection>
    </resultMap>

1.3 在XML中编写sql

根据名字查询该学生每一科成绩
<select id="selectByName" resultMap="scoreResult">
        SELECT
            a.*,
            b.*
        FROM
            user AS a
        LEFT JOIN score AS b ON b.user_id = a.id
        <if test="name !=null and name != '' ">
            a.name = #{name}
        </if>
    </select>
正文到此结束