论坛首页 Java企业应用论坛

『讨论』请问iBatis是否可以直接执行SQL语句

浏览 15787 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-01  
确实没有
0 请登录后投票
   发表时间:2007-02-01  
可以试试那个共用语句  把WHERE写成共用
0 请登录后投票
   发表时间:2007-02-02  
xml 代码
 
  1. <select id="getList" resultClass="paylog" parameterClass="paylog">  
  2.     select * from paylog  
  3.     <dynamic prepend="WHERE">  
  4.         <isNotEmpty prepend="AND" property="company">  
  5.             (company = #company#)  
  6.         </isNotEmpty>  
  7.         <isNotEmpty prepend="AND" property="fromdate">  
  8.             createtime &gt;= #fromdate#  
  9.         </isNotEmpty>  
  10.         <isNotEmpty prepend="AND" property="todate">  
  11.             createtime &lt;= #todate#  
  12.         </isNotEmpty>  
  13.         <isGreaterThan prepend="AND" property="fromuser_id" compareValue="0">  
  14.             fromuser_id=#fromuser_id#  
  15.         </isGreaterThan>  
  16.     </dynamic>  
  17.     order by createtime desc  
  18.     limit #pagemove#,#pagesize#  
  19. </select>  
  20.   
  21. <select id="getCount" resultClass="int" parameterClass="paylog">  
  22.     select count(*) from paylog  
  23.     <dynamic prepend="WHERE">  
  24.         <isNotEmpty prepend="AND" property="company">  
  25.             (company = #company#)  
  26.         </isNotEmpty>  
  27.         <isNotEmpty prepend="AND" property="fromdate">  
  28.             createtime &gt;= #fromdate#  
  29.         </isNotEmpty>  
  30.         <isNotEmpty prepend="AND" property="todate">  
  31.             createtime &lt;= #todate#  
  32.         </isNotEmpty>  
  33.          <isGreaterThan prepend="AND" property="fromuser_id" compareValue="0">  
  34.             fromuser_id=#fromuser_id#  
  35.         </isGreaterThan>  
  36.     </dynamic>  
  37. </select>  
可以试着这样解决
where 也可一用include
0 请登录后投票
   发表时间:2007-02-05  
可以把查询条件独立出来,然后使用的地方用
<include refid="sql_id"/>
来引入, 关于查询可以以命名规则来匹配,比如查询名为 find,那么对应的查询条件为 findSql, 对应的记录总数为 findCount, 这样的话程序写起来也是很方便的。

<!-- findSql, find, findCount -->
	<sql id="findSql">
		from paylog t
    	<dynamic prepend="WHERE">   
			<isNotEmpty prepend="AND" property="company">   
				(t.company = #company#)   
			</isNotEmpty>   
			<isNotEmpty prepend="AND" property="fromdate">   
				t.createtime &amp;gt;= #fromdate#   
			</isNotEmpty>   
			<isNotEmpty prepend="AND" property="todate">   
				t.createtime &amp;lt;= #todate#   
			</isNotEmpty>   
			 <isGreaterThan prepend="AND" property="fromuser_id" compareValue="0">   
				t.fromuser_id = #fromuser_id#   
			</isGreaterThan>   
	    </dynamic> 
	</sql>
	<statement id="find" resultMap="result">
		select * 
		<include refid="findSql"/>
		order by t.ID asc
	</statement>
	<statement id="findCount" resultClass="java.lang.Integer">
		select count(*) 
		<include refid="findSql"/>
	</statement> 
0 请登录后投票
   发表时间:2007-02-13  
统一配置where条件的,不好用
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics