【MapSheep】
[好记性不如烂笔头]

Mybatis多对一【association】

  1. 多对一
/**
 * 添加部门实体字段
 * 第一步:多方添加一方的实体类:com/hxh/basic/project/vo/UserVo.java:18
 */
private GradeVo gradeVo;

/*第二步:在一方Mapper中添加根据编号检索*/
<select id="get" resultType="com.hxh.basic.project.vo.GradeVo" parameterType="int">
	select * from grade where id = #{id};
</select>

/*第三步:在多方Mapper中进行resultMap映射查询*/
<resultMap id="TestMybatis" type="com.demo.pojo.Student" autoMapping="true">
	<id property="stuNo" column="stuNo"></id>
	<association property="grade" javaType="com.demo.pojo.Grade" column="gradeId"
				 select="com.demo.dao.GradeDao.get"></association>
</resultMap>

<select id="getAll" resultMap="TestMybatis">
	select * from student
</select>

/**
 * 第四步:调用Controller查询结果
 * 请求路径:http://localhost:8080/basic_project/user/getAll
*/
{
    "code": 0,
    "message": "ok",
    "data": [
        {
            "id": 6,
            "nickname": "Consumer",
            "username": "于瑶",
            "birthday": "2021-03-03T00:00:00",
            "gradeVo": {
                "id": 1,
                "gradeNane": "一年级"
            }
        },
        {
            "id": 7,
            "nickname": "Company",
            "username": "白志超",
            "birthday": "2021-03-05T00:00:00",
            "gradeVo": {
                "id": 0,
                "gradeNane": "幼儿园"
            }
        }
    ]
}


Mybatis一对多【collection】

  1. 一对多
/**
 * 添加用户字段集合
 * 第一步:多方实体类添加用户集合:com/hxh/basic/project/vo/GradeVo.java:27
 */
private List<UserVo> list;

/*第二步:在多方Mapper中添加根据状态检索*/
<select id="get" resultType="com.hxh.basic.project.vo.UserVo" parameterType="int">
	select * from user where status = #{status};
</select>

/*第三步:在一方Mapper中进行resultMap映射查询*/
<resultMap id="resultMap" type="com.hxh.basic.project.vo.GradeVo" autoMapping="true">
	<id property="id" column="id"></id>
	<collection property="list" ofType="com.hxh.basic.project.vo.UserVo" javaType="java.util.List" column="id"
				select="com.hxh.basic.project.mapper.UserMapper.get"></collection>
</resultMap>

<select id="getAll" resultMap="resultMap">
	select * from grade;
</select>

/**
 * 第四步:调用Controller查询结果
 * 请求路径:http://localhost:8080/basic_project/grade/getAll
*/
{
    "code": 0,
    "message": "ok",
    "data": [
        {
            "id": 0,
            "gradeNane": "幼儿园",
            "list": [
                {
                    "id": 5,
                    "nickname": "Producer",
                    "username": "高佳琪",
                    "birthday": "2021-03-03T00:00:00"
                }
            ]
        },
        {
            "id": 1,
            "gradeNane": "一年级",
            "list": [
                {
                    "id": 4,
                    "nickname": "LouisVan",
                    "username": "王莹",
                    "birthday": "2021-03-03T00:00:00"
                }
            ]
        },
        {
            "id": 2,
            "gradeNane": "二年级",
            "list": []
        }
    ]
}

概念

  1. 一对多和多对一
    • 一对多:collection【多方添加一方的实体类、property:实体类变量名称、JavaType:实体类的返回值类型、column:当前的外键,如status、select:调用一方的ID查询】
    • 多对一:association【一方添加多方集合、property:多方的变量名称、ofType:集合中多方的返回值类型、javaType:List包路径、column:当前ID,select:调用多方的根据外键查询】
posted on 2021-03-09 09:42  (Play)  阅读(114)  评论(0编辑  收藏  举报