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;

}

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

img

img

User,Role里面没有set/get方法呢?

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632