锁定老帖子 主题:ibatis 动态表、列查询
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-27
有的时候只对一个表作个简单的查询,不想去配置整个实体表的映射关系。 就想写个通用的不用每个实体表都要配置个<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')
以上只是个人开发经验小结,写不好的地方还请指教~
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-30
很少用resultMap ,不灵活,hashmap用的多
|
|
返回顶楼 | |
发表时间:2011-10-31
longware 写道 很少用resultMap ,不灵活,hashmap用的多
我这列确实固定的,有待改进。 |
|
返回顶楼 | |
浏览 4646 次