参考文章地址:https://www.cnblogs.com/stefanking/articles/5092474.html
mybatis mapper配置文件结果集映射resultMap中collection属性(一对多关系结果集映射)和association属性(多对一关系结果集映射)理解:
collection的使用有两种resultMap和select,必须手动指定一种
Mapper文件内容如下:
<?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.xi.mythymeleaf.dao.mapper.UserMapper">
<!-- collection resultMap 方法 -->
<!--<resultMap id="BaseResultMap" type="com.xi.mythymeleaf.dao.entity.User">
<id column="id" property="id" />
<result column="name" property="name" />
<collection property="accounts" resultMap="accountMap" />
</resultMap>
<resultMap id="accountMap" type="com.xi.mythymeleaf.dao.entity.Account">
<result column="aid" property="id" />
<result column="user_id" property="userId" />
<result column="num" property="num" />
</resultMap>
<select id="selectAll" resultMap="BaseResultMap">
SELECT t.id, t.name as name, a.id as aid,a.user_id,a.num FROM user t
RIGHT JOIN account a ON t.id=a.user_id
</select>-->
<!-- collection select 方法 -->
<resultMap id="BaseResultMap" type="com.xi.mythymeleaf.dao.entity.User">
<result column="id" property="id" />
<result column="name" property="name" />
<collection property="accounts" column="id" select="selectAccount" />
</resultMap>
<select id="selectAccount" resultType="com.xi.mythymeleaf.dao.entity.Account">
SELECT id as id, user_id as userId, num as num FROM account
WHERE user_id = #{id}
</select>
<select id="selectAll" resultMap="BaseResultMap">
SELECT * FROM user t
</select>
</mapper>
输出如下:
association(多对一结果集转换)的示例:
Mapper内容如下
<?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.xi.mythymeleaf.dao.mapper.AccountMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.xi.mythymeleaf.dao.entity.Account">
<id column="id" property="id" />
<result column="user_id" property="userId" />
<result column="num" property="num" />
<association property="user" resultMap="userMap" />
</resultMap>
<resultMap id="userMap" type="com.xi.mythymeleaf.dao.entity.User">
<result column="tid" property="id" />
<result column="name" property="name" />
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="id">
INSERT INTO account(user_id, num) VALUES(
#{userId}, #{num}
)
</insert>
<select id="selectAll" resultMap="BaseResultMap">
SELECT a.id as id, t.id as tid, a.user_id as user_id, num as num, t.name as name FROM account a
LEFT JOIN user t on a.user_id = t.id
</select>
</mapper>
输出如下:
源代码下载地址:https://download.youkuaiyun.com/download/zhizhuodewo6/10690245