<!-- 复用sql代码 -->
<sql id="CUSTOM_CABINET_INFO.QUERY_CABINET">
<dynamic prepend="AND">
<isNotNull prepend="AND" property="requestObject.cabinetNo">
eci.cabinet_no like '%'||#requestObject.cabinetNo#||'%'
</isNotNull>
<isNotNull prepend="AND" property="requestObject.status">
eci.status = #requestObject.status#
</isNotNull>
</dynamic>
</sql> ② <!-- 查询货柜信息 -->
<select id="CUSTOM_CABINET_INFO.queryCabinetInfo" resultClass ="com.goldenvista.webapp.basic.custom.model.QueryCabinetInfoModel" parameterClass="com.goldenvista.commons.model.PagingBaseModel">
SELECT * FROM (
SELECT ROW_.*, ROWNUM ROWNUM_ FROM (
select
eci.cabinet_id as cabinetId,
eci.cabinet_no as cabinetNo,
eci.cabinet_name as cabinetName,
decode(eci.cabinet_type,'','2组','','4组','','6组','','8组','无') as cabinetType,
els.line_no as lineNo
from ec_cabinet_info eci,ec_line_site_rel els
where eci.distribution_site_no =els.distribution_site_no(+)
<include refid="CUSTOM_CABINET_INFO.QUERY_CABINET" />
<![CDATA[
order by eci.cabinet_no desc
)
row_ WHERE rownum <=#endRecord#
)
WHERE rownum_ >#startRecord#
]]>
</select> 1 decode函数 DECODE函数相当于一条件语句(IF).
它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。
函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。
当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的返回值。
区别于SQL的其它函数,DECODE函数还能识别和操作空值.
其具体的语法格式如下: DECODE(input_value,value,result[,value,result…][,default_result]); 2 外连接的另一种写法 SELECT A.id, B.IDD
FROM A, B
WHERE A.id(+)=B.IDD 等价于 SELECT A.id, B.IDD
FROM A
RIGHT OUTER JOIN B ON (A.id=B.IDD) 3 追加过滤条件 prepend 为连接操作符 常用于连接 ""、"AND"、"OR"、"WHERE" 、"(" 、")"等 <dynamic prepend="AND">
<isNotNull prepend="AND" property="requestObject.cabinetNo">
eci.cabinet_no like '%'||#requestObject.cabinetNo#||'%'
</isNotNull>
</dynamic> 4 oracle 分页 要查询Test表第n条到第m条的记录,我们应该这样写:
//对已形成的rownum进行过滤
select * from (
//先用一个select把待查sql包围起来,此时rownum已经形成
select row_.*, rownum rownum_ from (
//真正的sql语句
select * from Test
) row_
)where rownum_ <= m and rownum_ >= n; 简化:
select * from (
select row_.*, rownum rownum_ from (
select * from Test
)row_
)where rownum_ <= m and rownum_ >= n; 5 <![CDATA[ ]]> 标记
避免Sql中与xml规范相冲突的字符对xml映射文件的合法性造成影响.如大于小于符号 6 连接符 ||
连接字符串的连接符 常用于模糊查询 ③ <insert id="insert">
INSERT INTO EC_ALARM_LIST
(
ALARM_LIST_ID,
RECV_NAME,
RECV_EMAIL
)
VALUES
(
#alarmListId:DECIMAL#,
#recvName:VARCHAR#,
#recvEmail:VARCHAR#
)
</insert> ④ <insert id="insertNotNull">
INSERT INTO EC_ALARM_LIST
<dynamic prepend="(">
<isNotNull prepend="," property="alarmListId">
ALARM_LIST_ID
</isNotNull>
<isNotNull prepend="," property="recvName">
RECV_NAME
</isNotNull>
)
</dynamic>
VALUES
<dynamic prepend="(">
<isNotNull prepend="," property="alarmListId">
#alarmListId#
</isNotNull>
<isNotNull prepend="," property="recvName">
#recvName#
</isNotNull>
)
</dynamic>
</insert> ⑤ <select id="queryServiceMonLogCount" resultClass="java.lang.Long" parameterClass="com.goldenvista.commons.model.PagingBaseModel">
SELECT count(*)
FROM (
SELECT
nvl(CEIL((sysdate - max(T.END_TIME)) * 24 * 60),-1) as communicationTime,
nvl(max(T.SERVICE_MON_ID),-1) as serviceMonId,
<![CDATA[(CASE WHEN NVL((sysdate - max(T.END_TIME)) * 24 * 60,30)>20 THEN '2' else '1' end) as INTERVAL,]]>
FROM SYS_MONITOR_LOG T, SYS_CABINET_INFO C
WHERE T.MON_OBJECT(+) = C.CABINET_NO
AND T.SERVICE_MON_ID IN ( SELECT MAX(sli.SERVICE_MON_ID) FROM box.SYS_MONITOR_LOG sli GROUP BY sli.MON_OBJECT)
<isNotNull prepend="AND" property="requestObject.monObject">
T.MON_OBJECT like '%' || #requestObject.monObject# || '%'
</isNotNull>
<isNotNull prepend="AND" property="requestObject.intervalDate2">
<![CDATA[ CEIL((sysdate - T.END_TIME) * 24 * 60) > #requestObject.intervalDate2# ]]>
</isNotNull>
<isNotNull prepend="AND" property="requestObject.intervalDate1">
<![CDATA[ CEIL((sysdate - T.END_TIME) * 24 * 60) <= #requestObject.intervalDate1# ]]>
</isNotNull>
GROUP BY C.CABINET_NO
)
</select> nvl(str,replaceStr)
ceil(n) 取大于等于数值n的最小整数
floor(n)取小于等于数值n的最大整数 SQL> select ceil(9.5) from dual; CEIL(9.5)
----------
10 SQL> select floor(9.5) from dual; FLOOR(9.5)
----------
9 ⑥ <select id="querySysModule" resultClass ="com.goldenvista.webapp.model.entity.mapping.SysModule" >
select distinct
t.MODULE_ID as moduleId,
t.MODULE_PID as modulePid,
t.MODULE_NAME as moduleName,
t.MODULE_ICON as moduleIcon,
t.MODULE_ICONCLS as moduleIconcls,
t.MODULE_LINK as moduleLink,
t.ORDER_INDEX as orderIndex
from sys_module t
where t. MODULE_PID=#modulePid#
start with t.module_id in(
select sup.model_id
from sys_user_permits sup,sys_module sm
where sup.model_id = sm.module_id
and sup.USER_ID=#userId#
)
connect by prior t.module_pid = t.module_id
order by t.ORDER_INDEX,t.module_id
</select> Oracle中递归算法 start with...connect by prior子句基本语法是: select ... from tablename
start with 条件1
connect by prior 条件2
where 条件3; 例:
select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id; 分析: 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: org_id,parent_id
那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。 条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
条件3 是过滤条件,用于对返回的所有记录进行过滤。 简单介绍如下:
早扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:
第一步:从根节点开始;
第二步:访问该节点;
第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;
第四步:若该节点为根节点,则访问完毕,否则执行第五步;
第五步:返回到该节点的父节点,并执行第三步骤。 总之:扫描整个树结构的过程也即是中序遍历树的过程。 ⑦
<select id="CUSTOM_PURCHQUERY.queryLists" resultClass="com.goldenvista.webapp.purchase.model.PurchListModel">
select
sum(l.Purchase_Amount) as amount,
sum(l.SUBTOTAL) as total
from
ec_purchase_explain_list l
<dynamic prepend="WHERE">
<isNotNull property="viewList">
l.purchase_explain_head_id in
<iterate property="viewList" conjunction="," open="(" close=")">
#viewList[]#
</iterate>
</isNotNull>
</dynamic>
</select> Iterate:这属性遍历整个集合,并为 List 集合中的元素重复元素体的内容。
Iterate 的属性:
prepend - 可被覆盖的 SQL 语句组成部分,添加在语句的前面(可选)
property - 类型为 java.util.List 的用于遍历的元素(必选)
open - 整个遍历内容体开始的字符串,用于定义括号(可选)
close -整个遍历内容体结束的字符串,用于定义括号(可选)
conjunction - 每次遍历内容之间的字符串,用于定义 AND 或 OR(可选)
遍历类型为 java.util.List的元素。 例子:
<iterate prepend=”AND” property=”userNameList” open=”(” close=”)” conjunction=”OR”>
username=#userNameList[]#
</iterate> <delete id="member.batchDelete" parameterClass="java.util.List">
DELETE FROM member where id IN
<iterate conjunction="," open="(" close=")" >
#value[]#
</iterate>
</delete> 注意:使用<iterate>时,在List元素名后面包括方括号[]非常重要,方括号[]将
对象标记为List,以防解析器简单地将List输出成String。 ⑧ 多字段 group by <!-- 站点信息查询:查询记录数 -->
<select id="CUSTOM_STAIONQUERY.queryStationListCount" resultClass="java.lang.Long" parameterClass="com.goldenvista.commons.model.PagingBaseModel">
select count(*) from(
select
*
FROM
EC_DISTRIBUTION_SITE eds, EC_CABINET_INFO eci
WHERE
eds.distribution_site_no = eci.distribution_site_no(+)
<include refid="CUSTOM_STATIONQUERY.QUERY_STATION" />
group by
eds.DISTRIBUTION_SITE_ID,
eds.DISTRIBUTION_SITE_NO,
eds.SITE_TYPE,
eds.SITE_TYPE_DETAIL,
eds.SITE_LEVEL,
eds.SITE_FULL_NAME,
eds.SITE_SHORT_NAME,
eds.SITE_ADDRESS,
eds.SITE_STATUS,
eds.NOTE
)
</select> ⑨ LOWER() <select id="queryEcGoods" resultClass ="com.goldenvista.webapp.model.entity.mapping.EcGoods" >
SELECT
GOODS_ID as goodsId,
GOODS_SN as goodsSn,
GOODS_NAME as goodsName
FROM EC_GOODS
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="goodsSn">
LOWER(GOODS_SN) like '%'||#goodsSn#||'%'
</isNotNull>
</dynamic>
ORDER BY GOODS_SN
</select>

[oracle] oracle-ibatis-整理的更多相关文章

  1. oracle常用函数整理

    oracle常用函数整理    1.绝对值.取余.判断数值正负函数    绝对值:ABS(n)        示例: SELECT ABS(100),ABS(-100),ABS('100') FROM ...

  2. install_driver(Oracle) failed: Can't load `.../DBD/Oracle/Oracle.so' for module DBD::Oracle

    Description This section is from the "Practical mod_perl " book, by Stas Bekman and Eric C ...

  3. 性能监控工具的配置及使用 - Spotlight On Oracle(oracle)

    一.    Spotlight On Oracle(oracle)1.1.   工具简介Spotlight是一个强有力的Oracle数据库实时性能诊断工具,提供了一个直观的.可视化的数据库活动展现.S ...

  4. 性能监控工具的配置及使用 - Spotlight On Oracle(oracle) 转:紫漪

    一.    Spotlight On Oracle(oracle) 1.1.   工具简介 Spotlight是一个强有力的Oracle数据库实时性能诊断工具,提供了一个直观的.可视化的数据库活动展现 ...

  5. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  6. Oracle学习笔记整理手册

    文章目录(1)Oracle正则匹配使用(2)Oracle修改有数据的数据字段类型(3)Oracle表数据回滚语句(4)sql筛选出记录数大于2的记录(5)oracle同义词(6)oracle内外连接( ...

  7. Oracle Hint用法整理笔记

    目录 1./+ result_cache / 2./+ connect_by_filtering / 3./+ no_unnset / 4./+ index(表别名 索引名) / 5./+ INDEX ...

  8. 工作中用到的oracle字符串分割整理

    oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...

  9. Oracle系统表整理+常用SQL语句收集

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  10. oracle分区表(整理)

    Oracle 表分区 早在8.0.5版本中,Oracle就将范围分区技术引入,现在分区功能已经越来越强大,包括支持扩展分区功能.Interval分区.外键分区.模拟列分区.以及分区建议器等.那么,分区 ...

随机推荐

  1. python学习笔记011——函数式编程

    1 函数式编程 面向对象 ,面向过程 ,函数式编程 侧重函数的作用,注重函数结果的传递 函数可以被赋值,也可以接受其他的值 2 函数式编程特点 1.函数是一等公民 与其他变量一样,可以赋值和被赋值,可 ...

  2. SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接

    不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict  ID  NAME  CATEGORY  1 RED  COLOR  ...

  3. LINUX使用DVD光盘或者ISO作为本地YUM源

    先把光盘或 ISO 文件挂载到文件系统: # mkdir /media/iso 挂载光盘: # mount /dev/cdrom /media/iso 或挂载 ISO 文件: mount -o loo ...

  4. 博客目录之C#

    C# BackgroundWorker的Bug??? C# BeginInvoke和EndInvoke方法 c# 高效的线程安全队列ConcurrentQueue C# ManualResetEven ...

  5. C# 动态获取代码所在行号

    通过System.Diagnostics.StackTrace获取代码所在行号和文件信息 获取行号信息 /// <summary> /// Get line number of code ...

  6. php - 中文字符串分割

    //先删除掉非中文的字体$str = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $str);//经过测试中文占3个篇幅$re = chunk_split( ...

  7. Apply Bug10010310 On Oracle RAC 10.2.0.5

    9月24日数据库上频繁出现例如以下错误 Errors in file /u04/admin/njord/udump/njord_ora_25895.trc: ORA-27300: OS system ...

  8. CSS中overflow:scroll怎么设置只上下滚动而不左右滚动

    CSS中"overflow:scroll"默认是左右,上下都滚动.怎么设置只上下滚动而不左右滚动,下面有个不错的解决方法 CSS中"overflow:scroll&quo ...

  9. modelsim与debussy联调环境的搭建

    为了方便查看波形,找来了一款软件——debussy,它的一个优点是任你查看设计内信号,只需一个波形文件,如FSDB文件.而不用像modelsim那样想看某些信号,添加了之后还要重新编译仿真,浪费了很多 ...

  10. [k8s] kubelet单组件启动静态pod

    kubelet单组件启动静态pod 无需k8s其他组件,单独下载kubelet的二进制,可以启动静态pod. 静态pod不受api管理,kubectl get po可以看到,但是kubectl del ...