1 一对一
定义一个一对一的Result,进行属性-字段之间的一对一关联映射即可,如果属性和字段是一致的,resultType实际也是可以的,resultMap更多是解决字段-属性不一致(满足驼峰命名就是一致),如id(属性)-USER_ID(字段)
2 一对多
设:一个用户对应多个角色
- User类中添加List<Role>
- 一的mapper.xml中,resultMap添加<collection>标签.
如:
<resultMap id="userMap" type="User"> <id property="id" column="id"></id> <result property="username" column="username"></result> <result property="password" column="password"></result> <result property="address" column="address"></result> <result property="email" column="email"></result> <collection property="roles" ofType="Role"> <id property="id" column="role_id"></id> <result property="name" column="role_name"></result> </collection> </resultMap>
会得到类似这样的数据
{ "id": "1003", "username": "小波", "password": "123456", "address": "北京市东城区", "email": "510273027@qq.com", "roles": [ { "id": "1", "name": "开发" }, { "id": "2", "name": "TL" } ] }
3 多对一
设:一个作者可以有多个博客
- Author类中添加Blog
- 一的mapper.xml中添加<association>
如:
<resultMap id="blogResult" type="Blog"> <id property="id" column="blog_id" /> <result property="title" column="blog_title"/> <association property="author" column="blog_author_id" javaType="Author" resultMap="authorResult"/> </resultMap> <resultMap id="authorResult" type="Author"> <id property="id" column="author_id"/> <result property="username" column="author_username"/> </resultMap>
或:
<resultMap id="productBean" type="Blog"> <id property="id" column="blog_id" /> <result property="title" column="blog_title"/> <!-- 多对一 --> <!-- property: 指的是属性名称, javaType:指的是属性的类型 --> <association property="category" javaType="Author"> <id column="cid" property="author_id"/> <result column="username" property="username"/> </association> </resultMap>
4 多对多
设:多个部门对应多个用户
- 定义一个第三方类,假设为UserForDept.java,属性private User user; private Dept dept;
- User类中添加Set<Dept>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept
- Dept类中添加Set<User>(针对不同场合这里也可以List),mapper.xml中添加<collection>添加UsersForDept