碰到了在service的代码中执行sql,和在数据库客户端执行sql执行结果不一致的问题。
sql如下
<select id="getFilterByExample" resultMap="PindanExtendResultMap">
select p.*,u.realname realname,a.nickname nickname from roadshow.tb_dxzf_pindan p
left JOIN roadshow.tb_user u on p.owner_id = u.id
left JOIN roadshow.tb_customer c on u.mobile = c.mobile
left JOIN roadshow_security.admin_user a on c.sales_id = a.id
</select>
在代码中执行返回的数据和在数据库客户端执行的结果不一致。
经过检查后发现是如下的问题
<resultMap id="PindanExtendResultMap"
type="com.bruce.geekway.model.data.PindanExtend">
<result column="realname" property="realname" jdbcType="VARCHAR" />
<result column="nickname" property="nickname" jdbcType="VARCHAR" />
<result column="id" property="pindanId" jdbcType="INTEGER" /> // 这一行,如果没有,就会出现问题。
<association property="pinDan" column="id" javaType="com.bruce.geekway.model.PinDan" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="listco_code" property="listcoCode" jdbcType="VARCHAR" />
<result column="listco_name" property="listcoName" jdbcType="VARCHAR" />
</association>
</resultMap>
model如下
public class PindanExtend {
public PinDan pinDan;
public Integer pindanId; // 需要添加association的model的id,即PinDan的id,否则会出错。
public String realname;
public String nickname;
}
参考 : http://www.cnblogs.com/zemliu/archive/2013/08/16/3263053.html
http://blog.csdn.net/sailei/article/details/51158462