a3rdsw 2022-03-29 15:48 采纳率: 100%
浏览 44
已结题

mybatis的collection写了和没写一样,反正只能查出来user对象

如图只查询了user,collection里面的东西没有被调用

img

xml里的代码

<?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.jkd.student_union.mapper.UserMapper">
    <select id="selectAllUser" resultType="com.jkd.student_union.pojo.User">
        select * from user;
    </select>

    <!--用户信息结果-->
    <resultMap id="mainMap" type="com.jkd.student_union.pojo.User">
        <id column="id" property="id"/>
        <result column="user_name" property="userName"/>
        <result column="password" property="password"/>
        <result column="nick_name" property="nickName"/>
        <result column="sex" property="sex"/>
        <result column="avatar" property="avatar"/>
        <result column="address" property="address"/>
        <result column="student_number" property="studentNumber"/>
        <result column="student_major" property="studentMajor"/>
        <result column="open_id" property="openId"/>
        <result column="status" property="status"/>
        <result column="admin" property="admin"/>
        <result column="student_belong" property="studentBelong"/>
        <result column="student_grade" property="studentGrade"/>
        <result column="phone_number" property="phoneNumber"/>
        <collection select="findRoles" column="id" ofType="com.jkd.student_union.pojo.Role" property="roles"/>
    </resultMap>

<!--角色结果-->
    <resultMap id="roleMap" type="com.jkd.student_union.pojo.Role">
        <id column="id" property="id"/>
        <result column="label" property="label"/>
        <result column="code" property="code"/>
        <collection property="permissions" ofType="com.jkd.student_union.pojo.permission" select="findPermission" column="id"/>
    </resultMap>

<!--获取用户信息-->
    <select id="findByUsername" parameterType="java.lang.String" resultType="com.jkd.student_union.pojo.User">
        select * from user where user_name = #{userName}
    </select>

<!--    根据用户id查询角色-->
    <select id="findRoles" parameterType="int" resultMap="roleMap">
        select * from role where id in (select role_id from user_roles where user_id = #{user_id})
    </select>

<!--    根据角色id查询权限-->
    <select id="findPermission" parameterType="int" resultType="com.jkd.student_union.pojo.permission">
        select * from permission where id in (select permission_id from role_permissions where role_id = #{id})
    </select>


</mapper>

实体类:


public class User implements UserDetails {

    private Long id;

    private String userName;

    private String password;

    private String nickName;

    private Integer sex;

    private String avatar;

    private String address;

    private String studentNumber;

    private String studentMajor;

    private String openId;

    private Boolean status;

    private Boolean admin;

    private Long studentBelong;

    private String studentGrade;

    private String phoneNumber;

    private List<Role> roles;


public class Role {

    private Long id;

    private String label;

    private String code;

    /**
     * 权限菜单
     */
    private List<permission> permissions;

}
  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2022-03-29 15:54
    关注

    你只查询user表的话,就用不上resultMap映射。
    联表查询的时候,才会用上resultMap.
    如果你想查询user的同时查询Role数据的话,就用联表查询,返回的结果是resultMap="mainMap"

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月6日
  • 已采纳回答 3月29日
  • 创建了问题 3月29日

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)