情况
springboot + Mybatis puls项目,使用mp生成代码工具生成的mapper、mapperXML、entity等代码。
自己再mapperXML写的sql查询对象,结果为null。
原因
使用mp的生成代码类生成的mapperXML中的Base_Column_List有别称,但是我查询返回结果用的BaseResultMap。mapperXML部门代码如下,也是出问题的部分。因为BaseResultMap中已经制定了字段名称与实体属性之间的对应,查询的字段再用as别名查询时是找不到BaseResultMap中的关联关系的。个人见解,如有好的理解请留言告知。
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.data.refleshdata.entity.RAllTrafficDay">
<id column="ALL_TRAFFIC_DAY_ID" property="allTrafficDayId" />
<result column="INBOUND_TRAFFIC" property="inboundTraffic" />
<result column="OUTBOUND_TRAFFIC" property="outboundTraffic" />
<result column="CREATE_TIME" property="createTime" />
<result column="TRAFFIC_DAY" property="trafficDay" />
<result column="TOTAL_TRAFIC" property="totalTrafic" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
ALL_TRAFFIC_DAY_ID AS allTrafficDayId, INBOUND_TRAFFIC AS inboundTraffic, OUTBOUND_TRAFFIC AS outboundTraffic, CREATE_TIME AS createTime, TRAFFIC_DAY AS trafficDay, TOTAL_TRAFIC AS totalTrafic
</sql>
解决方案
通用查询列中的字段去掉别名,如下
<sql id="Base_Column_List" >
ALL_TRAFFIC_DAY_ID, INBOUND_TRAFFIC, OUTBOUND_TRAFFIC, CREATE_TIME, TRAFFIC_DAY,
TOTAL_TRAFIC
</sql>