ibatis 动态表、列查询

有的时候只对一个表作个简单的查询,不想去配置整个实体表的映射关系。

就想写个通用的不用每个实体表都要配置个<sqlMap resource="com/xxx/yyy.xml" />的方案;

以下为实现步骤,目前仅支持查询8个字段(可扩展),整个查询sql封装在sqlQuery属性中,要查询的表名、列名可随意。

 

比如只想查name、password两个字段,则其它字段可按以下写法,主要为了与xml配置文件中的resultMap="CommonBeanResult字段对应。

 

select name col1,password col2,'' col3,'' col4,'' col5,'' col6,'' col7,'' col8,'' sqlQuery from tableXX where id = 30000

 

1.加个CommonBean.java

 

public class CommonBean implements Serializable {
	private String sqlQuery;
	private String col1;
	private String col2;
	private String col3;
	private String col4;
	private String col5;
	private String col6;
	private String col7;
	private String col8;

 

 

2.加个commonQuery.xml配置如下(因为每次查询的列不固定,设置remapResults="true"为了不让缓存)

 

<resultMap id="CommonBeanResult" class="CommonBean">
	<result property="col1" column="col1" />
	<result property="col2" column="col2" />
	<result property="col3" column="col3" />
	<result property="col4" column="col4" />
	<result property="col5" column="col5" />
	<result property="col6" column="col6" />
	<result property="col7" column="col7" />
	<result property="col8" column="col8" />
	<result property="sqlQuery" column="sqlQuery" />
</resultMap>

<select id="CommonBean.queryByArgs" resultMap="CommonBeanResult" remapResults="true">
<![CDATA[
    $sqlQuery$
]]>
</select>

 

3.调用时把整个sql封装在sqlQuery属性里面

CommonQuery param= new CommonQuery();
param.setSqlQuery("select name col1,password col2,'' col3,'' col4,'' col5,'' col6,'' col7,'' col8,'' sqlQuery from tableXX where id = 30000");
List<CommonBean> list = commonQueryMgr.queryByArgs(param);

  

用ibatis一段时间,只是在别人塔好的框架上进行简单肤浅的复制,没专门研究过,发现问题时上网找下,把看到的拼凑。

参考资料:http://blog.csdn.net/Yanyuxieyang/article/details/5361140

               http://www.iteye.com/topic/39367

 

 

顺便在这边记下ibatis配置示例 =.=

 (在Ibatis里,#val#,除了替换值,它都会加上一个单引号',所以sql中不需要加引号的话直接用$val$):

  t.OPERATOR_ID = #operatorId#

  t.OPERATOR_NAME like '%$operatorName$%'

  t.OPERATOR_NAME like '%'||#operatorName#||'%'

  t.DRAFTE_START_DATE>=trunc(#startDate#, 'dd')

 

以上只是个人开发经验小结,写不好的地方还请指教~

 

你可能感兴趣的:(ibatis)