ibatis 一对一多表关联查询的结果集写法问题
类的成员如下:
public class Order {
private String id;
private String user_id;
private String date;
private String status;
private User user;
.....getter()
.....setter()
}
result 结果集映射:
<resultMap id="get-association-result" class="order" >
<result property="id" column="ID" />
<result property="user_id" column="user_id" />
<result property="date" column="date" />
<result property="status" column="status" />
<!-- 引用另一个结合集映射,必须显式使用命名空间前缀 -->
<result property="user" resultMap="Order.get-user-result"/>
</resultMap>
<resultMap id="get-user-result" class="entity.User">
<result property="phone" column="PHONE" />
<result property="name" column="NAME" nullValue="" />
</resultMap>
SQL 查询语句:
<!-- 多表联查 -->
<select id="conditionQuery" parameterClass="java.util.Map" resultMap="get-association-result" >
select o.id,o.user_id,o.date,o.status,u.phone,u.name
from tb_order o left join tb_user u on o.user_id = u.id
<isParameterPresent>
<isNotEmpty prepend="where" property="status">
o.status = #status#
</isNotEmpty>
<isNotEmpty prepend="and" property="date">
o.date like concat('%',#date#,'%')
</isNotEmpty>
<isNotEmpty prepend="and" property="user_phone">
u.phone like concat('%',#user_phone#,'%')
</isNotEmpty>
order by o.create_date desc
<isNotEmpty property="start_index">
limit #start_index#,#count#
</isNotEmpty>
</isParameterPresent>
</select>