XML配置文件中的association用于表与表的连接适用于一对一和多对一(我遇到的是一对一,多对多还未涉及)
- <resultMap type="EsItem" id="EsItemDetailResult">
- <id property="itemId" column="item_id" />
-
- <result property="itemName" column="item_name" />
-
- <association property="sales" column="item_id" javaType="EsSales" resultMap="EsSalesResult" />
-
- </resultMap>
(为了便于观察我把resultMap中的配置删的只剩下这些)
1,上面的association标签的property中填的是查询结果对应的实体类中本来不应该有的东西
因为如果平时的话是按照表的字段来写实体类,但是这个东西不属于查询结果对应的表中
2,它来自与查询结果对应的表连接的表,但是查询结果对应的实体类中需要有这个连接的表对应的实体类及其get、set方法
3,column中填的是两个表之间连接的字段(外键?)
4,javaType填的是查询结果对应的实体类
5,resultMap对应的是下面的resultMap标签的id
贴一个被连接的表的resultMap
- <resultMap type="EsSales" id="EsSalesResult">
- <id property="itemId" column="item_id" />
- <result property="avgprice" column="avgprice" />
- <result property="opendate" column="opendate" />
- <result property="paydate" column="paydate" />
- <result property="highlights" column="highlights" />
- </resultMap>
这个里面的id标签可能(因为我这么写是可以的,所以我没有测把它改成自己的主键会不会不好使)也是与主表连接的字段(外键?)
总结:
1,写好各个表对应的实体类,主表对应的实体类中应该有被连接表对应的对象参数,如
- //这是EsSales实体类中的,当然还得加上他的get,set方法
- private EsSales sales;
2,配置好resultMap标签(连接的以及被连接的),把需要的字段配置进去