Mybatis中collection的配置(一对多)

2023-02-24 09:56:32

mybatis中因为字段不一致,导致错误。
我这里是起别名操作造成的,需要统一关系映射配置result中的字段和select方法中的字段。

<?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="com.rzy.mapper.MenuMapper">
    <!--关系映射-->
    <resultMap id="menuMap" type="com.rzy.pojo.MainMenu">
        <id column="id" property="id"></id>
        <result column="title" property="title"></result>
        <result column="path" property="path"></result>
        <collection property="sList" ofType="com.rzy.pojo.SubMenu">
            <id column="sid" property="id"></id>
            <result column="stitle" property="title"></result>
            <result column="spath" property="path"></result>
        </collection>
    </resultMap>

    <select id="getAllMenus" resultMap="menuMap">
        SELECT
          m.`id`,
          m.`title`,
          m.`path`,
          s.`id` sid,
          s.`mid`,
          s.`path` spath,
          s.`title` stitle
        FROM
          `mainmenu` m LEFT JOIN `submenu` s ON m.id = s.mid;
    </select>

</mapper>

说明:

collection定义一个子集合对象返回
ofType(type):指定集合里面元素的类型
property属性设置集合的属性名
id指的是主键,
column是数据库中的列
property映射的是实体类中的属性
result是普通列(非主键)

如果给部分字段起了别名,如下图:
在这里插入图片描述
要和上面配置的resultMap中的字段一致(如下图所示):
在这里插入图片描述
我这里遇到的问题:字段不一致。

  • 作者:小奔跳跳
  • 原文链接:https://blog.csdn.net/qq_35367566/article/details/107850253
    更新时间:2023-02-24 09:56:32