Mybatis中resultMap配置细则
1、级联属性
在实际的业务场景中,数据库表之间会涉及到一对一、一对多、多对多等多种关系,mybatis中resultMap提供了association、collection这些标签来处理这种关系。
1.1、associaton
association是mybatis支持级联的一部份,association主要是用来解决一对一关系的,假设我现在有两张表,一张表示省份,一张表示省份的别名,假设一个省只有一个别名(实际上有的省份有两个别名),我们来看一下如下两张表。
1.省份表:
说明:area字段表示该省市属于北方还是南方
2.别名表:
别名表中pid表示省份的id,假设我现在有一个实体类,Province,该类有两个属性,一个叫做name表示省份的名字,一个叫做alias表示省份的别名,那么我在查询的时候可以通过association来实现这种一对一级联,实现方式如下:
创建Alias实体类
public class Alias {
private Long id;
private String name;
}
创建Province实体类
public class Province {
private Long id;
private String name;
private Alias alias;
}
创建AliasMapper
public interface AliasMapper {
Alias findAliasByPid(Long id);
}
创建aliasMapper.xml(根据省份的id找到省份的别名)
<?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="org.sang.db.AliasMapper">
<select id="findAliasByPid" parameterType="long" resultType="org.sang.bean.Alias">
SELECT * FROM alias WHERE pid=#{id}
</select>
</mapper>
创建ProvinceMapper
public interface ProvinceMapper {
List<Province> getProvince();
}
创建provinceMapper.xml
<?xml version&