Mybatis+查询的结果集难道还要经过二次处理?不会吧?怎么优化?




能不能把另一个表(deparment)的字段dname,放到和用户表(Users)的字段id、name、did同级的地方????

阅读 153
2 个回答

改一下 UsersMapper.xml:

<mapper namespace="com.xujl.myspring.mapper.UsersMapper">
    <select id="findById" resultMap="UserList" parameterType="java.lang.Long">
        select u.*, d.dname from users u 
        left join deparment d on u.did=d.id 
        where u.did = #{id}
    </select>

    <resultMap id="UserList" type="com.xujl.myspring.entity.Users">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="did" column="did"/>
        <result property="dname" column="dname"/>
    </resultMap>
</mapper>

Users类:

public class Users {
    private Long id;
    private String name;
    private Long did;
    private String dname;  // 新增字段
    
    // getter和setter方法
}

在 resultMap 中直接映射 dname 字段,而不是通过 association 标签。

我看你那个UsersMapper.xml里用的association 标签

<mapper namespace="com.xujl.myspring.mapper.UsersMapper">
    <!-- 查询语句 -->
    <select id="findById" resultMap="UserList" parameterType="java.lang.Long">
        select u.*, d.dname 
        from users u 
        left join department d on u.did = d.id 
        where u.id = #{id}
    </select>

    <!-- 结果映射 -->
    <resultMap id="UserList" type="com.xujl.myspring.entity.Users">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="did" column="did"/>
        <result property="dname" column="dname"/>
    </resultMap>
</mapper>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏