Ibatis中的动态SQL:isNotNull,isPropertyAvailable,isNotEmpty用法

silvaco——GaN HEMT探索 上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型; 阅读详情

常用的几个关键字和属性:
isNotNull 参数不为null时有效
isNotEmpty 参数不为null或“”时有效
isPropertyAvailable
如果参数有使用(paramMap中有这个key,不管value是null还是“”)则查询条件有效
prepend   <isNotNull prepend="and" property="firstName" >
生成的语句不会有多余的and,因为dynamic有一个隐藏的属性:removeFirstPrepend="true",所以一般要写上prepend="and",需要的时候它会自动去掉。

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 


Ibatis中的动态SQL,主要分为一元条件和二元条件查询:

一元条件查询关键字:
<isPropertyAvailable> 如果参数有使用则查询条件有效。
<isNotPropertyAvailable>  如果参数没有使用则查询条件有效。
<isNull>      如果参数为NULL则查询条件有效。
<isNotNull>   如果参数不为NULL则查询条件有效。
<isEmpty>     如果参数为空则查询条件有效。
<isNotEmpty>  如果参数不为空则查询条件有效。参数的数据类型为Collection
String 时参数不为NULL或“”。如下所示:
<isNotEmpty  prepend=”AND” property=”firstName” >
FIRST_NAME=#firstName#
</isNotEmpty>
一元元素的属性:
prepend:可被覆盖的SQL语句组成部分,添加在语句的前面。
property:被比较的属性

二元条件查询关键字:<isEqual>
如果参数相等于值则查询条件有效。
<isNotEqual>
如果参数不等于值则查询条件有效。
<isGreaterThan>
如果参数大于值则查询条件有效。
<isGreaterEqual>
如果参数等于值则查询条件有效。
<isLessEqual>
如果参数小于值则查询条件有效。如下所示:
<isLessEqual  prepend = ”AND” property = ”age” compareValue = ”18” >
ADOLESCENT = ‘TRUE’
</isLessEqual>
二元元素的属性:
prepend:  可被覆盖的SQL语句组成部分,添加在语句的前面。
property:  被比较的属性
compareProperty: 另一个被比较的属性
compareValue:    被比较的值
此外,还有其它的元素:
1.<isParameterPresent>
如果参数类不为NULL则查询条件有效。
<isNotParameterPresent>
Checks to see if the parameter object is not present (null).
实例:
<isNotParameterPresent prepend=”AND”>
EMPLOYEE_TYPE = ‘DEFAULT’
</isNotParameterPresent>

 

2.动态iterate获取list下的对象

prepend - 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)

property - 类型为java.util.List的用于遍历的元素(必选)

open - 整个遍历内容体开始的字符串,用于定义括号(可选)

close -整个遍历内容体结束的字符串,用于定义括号(可选)

conjunction - 每次遍历内容之间的字符串,用于定义AND或OR(可选)

#dealIdList[]#  []括号是必须的

 

<dynamic prepend="and">
  <isNotNull property="dealIdList">
      <iterate prepend="AND" property="dealIdList" open="(" close=")" conjunction="OR">
            d.DEAL_ID = #dealIdList[]#
      </iterate>
  </isNotNull>
</dynamic>


最终生成的sql语句:DEAL_ID= ‘1245’ or DEAL_ID= ‘1246’ or DEAL_ID= ‘1247’

 

如下使用ids是数组:

DEAL_ID  in

<iterate  prepend="" property="ids"  open="("  close=")"  conjunction="," >

               #ids[]#

  </iterate>

最终sql语句:DEAL_ID in (‘1234’,’1235’,’1236’)

 

3、动态intersect (取交集)

<dynamic prepend="INTERSECT SELECT DEAL_ID FROM DEAL_USER WHERE STATUS !='DELETED' AND" open="(" close=")">
         <isNotNull property="generalId">
                  <iterate prepend="AND" property="generalId" open="(" close=")" conjunction="OR">
                           GEN _ID = #generalId[]#
                  </iterate>
         </isNotNull>
         <isNotNull property="specificId">
                   <iterate prepend="OR" property="specificId" open="(" close=")" conjunction="OR">
                            SPEC _ID = #specific Id[]#
                   </iterate>
         </isNotNull>
</dynamic> 

4、oracle union、 union all、intersect、minus

集合操作有 并,交,差 3种运算。

 union :得到两个查询结果的并集,并且自动去掉重复行。不会排序

 union all:得到两个查询结果的并集,不会去掉重复行。也不会排序

 intersect:得到两个查询结果的交集,并且按照结果集的第一个列进行排序

 minus:得到两个查询结果的减集,以第一列进行排序

例子:

  下面是两个表:一个主修课程表,一个选修课程表。

这个是主修课程表:minors

     create table minors(

         minor_id number primary key,

         minor_name varchar2(30) not null,

         credit_hour number(2)

      )

 

插入3条记录:               

  insert into minors values(10101,'计算机原理',4)

      insert into minors values(10201,'自动控制原理',3)

      insert into minors values(10301,'工程制图原理',4)

 

下面创建选修课程表minors2

 create table minors2(

         minor_id number primary key,

         minor_name varchar2(30) not null,

         credit_hour number(2)

       )

插入两条记录:

        insert into minors2 values(10201,'自动控制原理',3)

       insert into minors2 values(10301,'工程制图原理',4)  

两个表使用union all:得到如下结果

        select minor_id,minor_name,credit_hour from minors union all

       select minor_id,minor_name,credit_hour from minors2 order by     credit_hour

结果:   

MINOR_ID MINOR_NAME                     CREDIT_HOUR

---------- ------------------------------ -----------

     10201 自动控制原理                             3

     10201 自动控制原理                             3

     10101 计算机原理                               4

     10301 工程制图原理                             4

     10301 工程制图原理                             4

两个表使用union :得到如下结果

select minor_id,minor_name,credit_hour from minors union

 select minor_id,minor_name,credit_hour from minors2 order by credit_hour

结果:

MINOR_ID MINOR_NAME                     CREDIT_HOUR

---------- ------------------------------ -----------

     10201 自动控制原理                             3

     10101 计算机原理                               4

     10301 工程制图原理                             4

两个表使用intersect :得到如下结果

     select minor_id,minor_name,credit_hour from minors intersect

    select minor_id,minor_name,credit_hour from minors2

结果:

MINOR_ID MINOR_NAME                     CREDIT_HOUR

---------- ------------------------------ -----------

     10201 自动控制原理                             3

     10301 工程制图原理                             4

 

两个表使用minus :得到如下结果

    select minor_id,minor_name,credit_hour from minors minus

    select minor_id,minor_name,credit_hour from minors2

结果:

MINOR_ID MINOR_NAME                     CREDIT_HOUR

---------- ------------------------------ -----------

     10101 计算机原理                               4

 

在 SAP BAS 中扩展标准 SAP Fiori 应用并部署到 ABAP 环境的完整实践指南 SAPUI5 Adaptation Project 摘要(148字) SAPUI5 Adaptation Project 提供了一种高效扩展标准Fiori应用的方式,通过创建应用变体(Application Variant)实现差异化定制。开发者可在SAP BAS中使用可视化编辑器修改UI元素(如隐藏字段、调整表格布局、添加按钮等),而无需重写业务逻辑。变体部署到ABAP环境后,可与标准应用并行使用,且能随原应用升级保持同步。典型应用场景包括为不同用户角色定制简化界面或增强特定功能,既满足个性化需求,又保留 阅读详情

相关推荐

Bugku中的source

进入环境后 我们首先查看源码可以得到一个flag 这肯定是个假的(已经提交过了确实是个假的) 题目提示要用Linux 这里使用的是kali 我们首先dirsearch一下这个网站 可以看到有.git文件泄露 也可以点开那个链接但是在里面没有找到flag 然后选择下载这个.git文件 然后进入这个文件夹 输入git reflog查看文件状态 可以看到有四个都有flag is here 一个一个查看git show 然后在40c6d51中发现了我们需要的fl

A272036149的博客 1011

isPropertyAvailable和isEmpty的使用场景-ibatis研究-原创

isPropertyAvailable和isEmpty的使用场景-原创   isPropertyAvailable和isNotEmpty 这个两个属性非常有用 isPropertyAvailable:入参有这个属性 isNotEmpty:入参的这个属性不为空 入参一般是一个封装了数据的DTO 如果希望一个属性无论为何值都符合条件则使用isProperty

zhangxch的专栏 6108

SolidWorks 2022 学习(一)软件安装

接下来是安装SolidWorks,右键SolidWorks.2022.SP0.Premium.DVD.iso,选择装载。然后以管理员身份运行SolidWorks_Flexnet_Server目录下的server_install.bat。更改需要安装的产品,以及安装路径,并勾选接受条款,点击现在安装,会弹出如下窗口。然后以管理员身份运行setup.exe,开始安装solidworks。下载链接会在文章末尾给出,下载完成的文件如下图所示。双击注册表文件,然后点击确定。保持不动,点击确定,开始安装。

qq_38383364的博客 3126

ibatis 中的 isNotNull、isNull、isNotEmpty、isEmpty

一、区别 isNotNull:表示参数不为 NULL,返回 TRUE 反之则为 FALSE isNull:表示参数为 NULL,返回 TRUE 反之则为 FALSE isNotEmpty:表示参数不为 NULL 也不为空,返回 TRUE 反之则返回 FALSE isEmpty:表示参数为 NULL 或着为空,返回 TRUE 反之则为 FALSE 二、对比 当 xml 中用 isNotEmpty 配置时 <select id="queryTable" resultClass="int" parame

ChineseSoftware的博客 5505

车载机器人终极解决方案:从功能叠加到生态融合的颠覆性变革

本文提出一种融合智能汽车与家居技术的车载机器人架构。其创新点包括:1)基于多模态传感器的拟人化硬件设计,实现声源定位误差<5°、体温检测精度±0.3℃;2)跨模态情感计算引擎,综合面部表情、心率等数据构建三维情绪模型;3)协议自适应中间件,支持小米、华为等多品牌智能家居设备即插即用;4)环境自适应舵机控制,-30℃环境下扭矩保持率达92.5%。测试数据显示,该方案使交互步骤减少60%,用户满意度提升58%,日均使用时长增加2.3倍,为"人-车-家"生态融合提供了可行技术路径。

qq_42671193的博客 1123

可视化工具--Plotly

随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,要想快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对于Python语言来说,比较传统的数据可视化模块是Matplotlib,但它存在不够美观、静态性、不易分享等缺点,限制了Python在数据可视化方面的发展。   为了解决这个问题,新型的动态可视化开源模块Plotly应运而生。由于Plotly具有动态、美观、易用、种类丰富等特性,所以一经问世就受到开发人员的喜爱。

YFater的博客 1万+

ibatis 使用遇到的问题1

is_deleted=0 <isNotEmpty prepend="and" property="id" removeFirstPrepend="true">id=#id# <isNotEmpty prepend="and" property="searchWord" removeFirstPrepend="true">search_word like concat('

Neil积累tech 741

机器人视觉联动精度优化:从±2mm到±0.02mm,产线级手眼标定全实战

2025年我接东莞长安Type-C接口分拣项目的时候,就是栽在了手眼标定上:实验室里标定完精度±0.5mm,一到产线直接掉到±2mm,机器人10次有3次抓不住,2000多件Type-C接口直接报废,还撞坏了2套汇川SCARA机器人的吸盘,本来45天的工期拖了3个月,不仅没赚到钱,还倒贴了几万块。手眼标定从来不是简单的跑个demo、算个矩阵就完事了,它是一个系统工程:从硬件选型、安装固定、相机标定、标定流程、算法优化、环境控制、重复验证,每一个环节都会影响最终的联动精度。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 382

mybatis 配置文件详解

Mapper XML Files mybatis 的映射文件重要性就不说了,除了使用了映射文件还有一种就是使用注解的方式,我们先看看优缺点: 既然支持2种形式现在我就思考2个问题? 这2种方式是否可以同时使用? 答案是肯定的可以使用 如果一个方法同时在xml配置也使用annotation注解哪个起作用? 答案是:不允许这样做的,也好理解,不然mybatis不知道使用哪个实例化. 抛出的异常为: ...

459

Ubuntu开机进入initramfs,解决办法来了!

摘要:Ubuntu系统启动时卡在initramfs界面,表明系统无法正常挂载根文件系统。常见原因包括引导配置错误、文件系统损坏、驱动程序问题和硬件故障。解决方法包括:1)使用fsck修复文件系统;2)通过dmesg排查驱动问题;3)检查硬盘等硬件状态;4)重新安装GRUB引导程序。建议做好系统备份等预防措施,遇到问题时按步骤排查。该问题通常可通过文件系统修复或引导配置重建解决。(148字)

米可的博客! 3419

视觉提示学习(Prompt Learning):CV领域的GPT时刻?

视觉提示学习(Prompt Learning):CV领域的GPT时刻? ,人工智能,计算机视觉,大模型,AI,在人工智能技术不断演进的今天,计算机视觉(Computer Vision,CV)作为人工智能领域的重要分支,始终致力于让机器 “看懂” 世界。从早期基于传统特征工程的图像识别方法,到深度学习时代卷积神经网络(Convolutional Neural Networks,CNN)的崛起,CV 领域经历了多次重大变革。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

ibatis中的动态SQL:isNotNull,isPropertyAvailable,isNotEmpty,isGreaterThan等标签用法

[size=large]常用的几个关键字和属性:  isNotNull 参数不为null时有效  sNotEmpty 参数不为null或“”时有效  isPropertyAvailable 如果参数有使用则查询条件有效  prepend     生成的语句不会有多余的and,因为dynamic有一个隐藏的属性:removeFirstPrepend="true", 所以一般要写上prepe

核桃的博客——JavaWeb技术分享 6187

【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆

Qwen3-Embedding:文本嵌入与重排序模型的技术解析与应用实践

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3088

ibatis中使用安全的拼接语句,动态查询,大于、小于、等于

在ibatis中使用安全的拼接语句,动态查询 ibatis 比JDBC的优势之一,安全高效 说明文字在注释中 [code="java"] select id,note from Product id = #id# note like '%$note$%' [/code] 用Map传参 数 [code="java"...

蓝色回报 578

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ibatis动态查询条件

             select * from employee //动态SQL语句                                                emp_id = #value#                                               /*动态SQL的写法:开始

溺水的鱼 - Later equals never. 1278

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ibatis

ibatis中#与$的区别 #与$区别: 1.#是把传入的数据当作字符串,如果 order by #field# ,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错.. 2.$传入的数据直接生成在sql里,如果 order by $field$ ,如$field$ 传入的是id,则sql语句生成是这样,order by id, 这就...

iteye_5137的博客 127

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ibatis动态语句中的prepend

ibatis动态语句中的prepend

qq_44884300的博客 1437

iBATIS.net的OR映射篇

相对于Nhibernate复杂的配置文件实现来说,IBatisnet的映射配置更为简单直接,下面我们就之前的例子分析一下一个典型的配置文件(Person.xml): Code&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;sqlMap namespace="Person" xmlns="http://ibatis.apache.org/mappi...

weixin_33858249的博客 165

Ibatis中 isNotEmpty与isPropertyAvailable的区别

isNotEmpty表示是否传的值为空或null isPropertyAvailable 表示有没有传入这个参数

青青子呤,悠悠我心 474

ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别

ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别   1.isNull, isNotNull与isEmpty, isNotEmpty区别在iBATIS中isNull用于判断参数是否为Null,isNotNull相反 isEmpty判断参数是否为Null或者空,满足其中一个条件则其trueisNotEmpty相反,当参数既不为Null也...

yangdonghhm的专栏 515

ibatIS中的isNotNull、isEqual、isEmpty

ibatIS中的isNotNull、isEqual、isEmpty iBatIS isNull判断property字段是否是null,用isEmpty更方便,包含了null和空字符串   例子一: isEqual相当于equals,数字用得多些,一般都是判断状态值 或   例子一: 传入的map或者类的属性name等于"1"吗,是就附加and和vv

OnePiece 2917
上一篇: Oracle Sequence 使用
下一篇: Arrays.asList 数组转为list使用注意
feiyu8607
博客等级 码龄18年 26粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值