首页 > 数据库 >mybatis控制动态SQL拼接标签之if test标签

mybatis控制动态SQL拼接标签之if test标签

时间:2023-05-03 16:23:28浏览次数:33  
标签:判断 标签 数据类型 mybatis SQL test property id

if标签通常用于WHERE语句、UPDATE语句、INSERT语句中,

通过判断参数值来决定是否使用某个查询条件、判断是否更新某一个字段、判断是否插入某个字段的值。

mybatis是一个天才设计,面向对象未必就是真理,相对于JPA等框架,具有更大的自由度和灵活度。

简单示例

select 
host_name as hostName
from t_node_agent
where t.f_flag =1
<if test=" osType != null and osType != '' ">
and t.os_type=#{osType}
</if>
  1. if标签的test属性必填,该属性值是一个符合OGNL要求的判断表达式,一般只用true或false作为结果。

  2. 判断条件property != null 或 property == null,适用于除了基础数据类型的其它类型,用于判断属性值是否为空。

  3. 判断条件property != '' 或 property == '',仅适用于String类型的字段,用于判断是否为空字符串。

  4. 当有多个判断条件时,使用and或or进行连接,嵌套的判断可以使用小括号分组。

  5. 没有if else ,if可嵌套

基础数据类型判断的坑

public ScriptVO getScriptById(int scriptId);
<where>
<if test ='scriptId !=null '>
	and t.script_id = id
</if>
</where>

基础数据类型不能做空判断:
1、用Integer替代int参数类型
2、修改参数接收方式,用_parameter接收参数。

<where>
<if test="_parameter!=null">
	and t.script_id = id
</if>
</where> 

标签:判断,标签,数据类型,mybatis,SQL,test,property,id
From: https://www.cnblogs.com/hcgk/p/17369197.html

相关文章

  • mybatis 动态sql语句拼接
    mybatis常用占位符的方式传递参数,比较安全,可以防止sql注入。有些时候,特殊逻辑需要java封装好一些特殊的查询条件,然后和mybatis一起封装成特殊sql进行执行。{param}:替换参数${sql}:拼接sql语句。遇到一些模板类的功能,例如用户选择查询条件,或者查询语句,就需要动态sql技术。这个......
  • test
    @目录搭建ZooKeeper集群集群有三个节点搭建ZooKeeper集群3个节点安装JavaJDK环境,3个节点均执行命令如下:yuminstall-yjava-1.8.0-openjdkjava-1.8.0-openjdk-devel将zookeeper-3.4.14.tar.gz软件包上传至3个节点的/root目录下,进行解压操作,3个节点均执行命令如下:tar-zx......
  • mybatis格式化输出标签之trim标签
    trim属性主要有以下四个prefix:前缀覆盖并增加其内容suffix:后缀覆盖并增加其内容prefixOverrides:前缀判断的条件suffixOverrides:后缀判断的条件其实这个很少用,因为有对应的标签做处理。查询等同where标签功能<selectid="getAgentList"resultType="com.wht.demo.dao.vo.A......
  • mybatis格式化输出标签之where 标签
    复制copy是程序员提高效能的核心方式,但是由于有些知识陈旧了,年复一年的复制,而没有系统的知识学习,并不晓得还有更合理或者更优雅的写法。1=1这种东西很多项目很常见,但是应该被放进历史的垃圾桶的。<selectid="getAgentList"resultType="com.wht.demo.dao.vo.AgentVo"> s......
  • AtCoder Regular Contest 125 F Tree Degree Subset Sum
    洛谷传送门AtCoder传送门首先将度数\(-1\)。设\(f_i\)为体积为\(i\)至多能用几个物品凑出来,\(g_i\)为至少。我们现在要证明一个东西:\(x\in[g_i,f_i]\),\((i,x)\)合法。首先若\((s,x)\)合法,那么必须满足\(s-x\in[-z,z-2]\),其中\(z=\sum\limits_{i=1}......
  • SQL Server(1)常用查询
    序言 结果集拼接左右横向拼接LEFTJOIN上线纵向拼接UNIONunion:得到两个查询结果的并集,并且自动去掉重复行。不会排序unionall:得到两个查询结果的并集,不会去掉重复行。也不会排序 YEARMONTH资料......
  • django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is requi
     1、在项目中__init__.py中这个报错原因,python3.5以上版本不支持这种方式frompymysqlimportinstall_as_MySQLdbinstall_as_MySQLdb()解决:importpymysqlpymysql.version_info=(1,4,3,"final",0)#指定了pymysql的版本:1.4.3,按照你版本修改pymysql.install_as_MySQLdb()......
  • 《SQLi-Labs》02. Less 6~10
    目录Less-6知识点题解Less-7题解Less-8题解Less-9知识点题解Less-10题解sqli。开启新坑。Less-6知识点布尔盲注。与Less-5基本相同。这里只简略写大致步骤。length()函数:返回字符串所占的字节数。ascii()函数:返回字符串最左字符的ASCII值。如果是空字符串,返回0。如......
  • idea创建SpringBoot项目报错For artifact {mysql:mysql-connector-java:null:jar}: Th
    Forartifact{mysql:mysql-connector-java:null:jar}:Theversioncannotbeempty.报错如图:pom.xml文件如图:添加版本号:就好了......
  • [网络安全]sqli-labs Less-2 解题详析
    往期回顾:[[网络安全]sqli-labsLess-1解题详析](https://blog.csdn.net/2301_77485708/article/details/130410800?spm=1001.2014.3001.5502)判断注入类型GET1and1=1,回显如下:GET1and1=2,没有回显:说明该漏洞类型为整型注入。判断注入点个数GET1orderby3,回显如下:GE......