ibatissql语句
1. IBatis 怎样直接执行sql语句
ibatis中,参数部分是用##表示的,这种格式的是字符串,会自动在内容两端加上单引号,$$表示的是原样输出,你这里有两个参数,且要求的是数值,所以要用$$,那么在ibatis的xml配置文件中,写法就是:
select *
from table
limit $count1$, $count2$.
而在java中,通过调用ibatis框架中的方法,将count1和count2变量的值传递进去就可以了。
2. ibatis与sql语句的转换
在ibatis 中,SQL语句经常会出现一些特殊符号,比如:> < 等符号,在xml中会被转义,解析时会出错
这样可以使用 <![CDATA[ SQL内容 ]]> 进行常量标识,这样里面的SQL内容会以文本的形式存在 ,不会被解析
如:
<![CDATA[
select CASE
WHEN b.mo_number + b.mt_number = 0 THEN
'---'
ELSE
to_char(round((a.mo_number + a.mt_number - b.mo_number -
b.mt_number) / (b.mo_number + b.mt_number),
4) * 100) || '%'
END flow_rate_of_change
from al;
]]>
另外,还有ibatis 中:> 可以表示大于号,< 表示小于号
如: where score > 90 表示:where score > 90
希望可以帮到你
3. ibatis的sql语句,大神们来看一下
oracle 中的rownum是个伪列,只有在有结果集的时候才有值;
内层先找到 rownum<=xxx 值:(rownum从1开始) 找到第一条记录 rownum =1, 1<=xxx正确,则返回该条记录,直到找到rownum= xxx的最后一条记录为止,因此内层 存在结果集了并且rownum还是从1(或者maxResult值)开始的值,因此,可以对着这个子查询 进行rownum>xxx操作了;
举个反例:表A中有100条数据
select * from a where rownum >= 50 and rownum <59;(该语句看似能查出10条记录,但是它一条记录也不会查出来)
分析:
先查找第一条记录 rownum 赋值为1 此时,1 <59 但是 1并不大于等于50 条件不符,
继续查找下一条 rownum 赋值为1 此时,1 <59 但是 1并不大于等于50 条件不符
直到 查询整个库 ,结果是没有符合条件的记录,因此就查不到记录了;
select * from (select rownum from a where rownum< 59) where rownum >=50
select rownum from a where rownum< 59
先查找第一条记录 rownum 赋值为1 此时,1 <59 条件符和,
继续找第二条记录 rownum此时赋值为2 ,2<59 条件符合,
直到 找到rownum = 58的记录为止,此时找到了所有符合条件的值,并且rownum是从1到58设值的, 此时就可以使用 >=50这个条件 将记录选出了;
------------------------------------
row_ 是子查询的一个别名,,
4. SQL语句在ibatis中xml中的写法
ibatis的xml中的sql写法跟在数据库工具的写法差不多,max(ts_object_op_log.create_time)可以直接max(create_time),应该是resultClass这里出了问题。resultClass = "java.util.HashMap 、java.lang.String 、java.lang.Long "等,貌似不能直接写一个变量名。
5. 如何设置ibatis 后台打印完整的sql语句
#将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句
log4j.rootLogger=debug,stdout,logfile