想要动态的获取所需要的字段,想来想去没有想到好的方法,只有下面一个不成熟的想法,提笔记之,以备改进。
代码极其简单,一看即明白。有一点要注意的就是remapResults="true"一定要设置(缓存是把双刃剑)
entity.getFeild_map().put("partner_id", "partner_id");
entity.getFeild_map().put("partner_name", "partner_name");
if(null != s){
entity.getFeild_map().put("state", "state");
}
List<TbPtyVsopPart> entityList = ibatisTemplate.
queryForList(CommonLatnCode.static_latn_code, "TB_PTY_VSOP_PART.testDynamicSql", entity);
下面为配置文件
<select id="testDynamicSql" resultClass="tbPtyVsopPart" parameterClass="tbPtyVsopPart" remapResults="true">
<![CDATA[ select * from ( select t_.*, rownum rn_ from ( ]]>
select
<dynamic prepend=" ">
<isNotNull prepend="," property="feild_map.partner_id">PARTNER_ID</isNotNull>
<isNotNull prepend="," property="feild_map.partner_code">PARTNER_CODE</isNotNull>
<isNotNull prepend="," property="feild_map.partner_type">PARTNER_TYPE</isNotNull>
<isNotNull prepend="," property="feild_map.partner_desc">PARTNER_DESC</isNotNull>
<isNotNull prepend="," property="feild_map.state">STATE</isNotNull>
<isNotNull prepend="," property="feild_map.state_date">STATE_DATE</isNotNull>
<isNotNull prepend="," property="feild_map.partner_level">PARTNER_LEVEL</isNotNull>
<isNotNull prepend="," property="feild_map.partner_name">PARTNER_NAME</isNotNull>
</dynamic>
from PARTNER t where 1 = 1
<include refid="sf-tbPtyVsopPart" />
<!-- order by ID asc -->
<![CDATA[ ) t_ where rownum <= (#row.first# + #row.count#)) where rn_ >= (#row.first# + 1) ]]>
</select>