N-1映射
N-1即 当关联的select语句返回的结果集只有一条记录
所谓关联映射,就是查询 A 表的数据,用一个java对象来映射,但是,这个java对象所需要的部分数据无法从 A 表中直接获得,要从 B 表中获取,当然,B 表获取的数据与 A 表相关联(一般为主从表的关系)。
关键思路:把无法直接获取的属性值另外拿出来分析,我们要从 B表 中另外查询数据用于填充这个属性,那么这个查询B表语句很显然要从A中提取某个数据,作为查询 B表 的依据(例如根据A表中的id,然后拿这个id值作为过滤条件,来查询B表)
基于Mapper.xml:
关键点:
我们已经知道,配置结果集映射时,普通属性直接为其制定column,property来完成 数据库列名 与 java对象属性名 之间的映射。
但是,有些数据并不能之间拿数据库列中数据来简单的填充java对象属性,这个时候不能简单的指定column,而是要另外关联一个select语句,根据这个select查询结果来填充这个特殊的属性。
所以程序中存在两个Mapper组件。
示例:
<select id="queryAddress" resultMap="addressMap">
select * from address where address_content regexp #{aa};
</select>
<select id="queryAddress2" resultMap="addressMap">