首页 > 数据库 >MyBatis在SQL语句中取list的大小

MyBatis在SQL语句中取list的大小

时间:2024-10-18 11:22:32浏览次数:7  
标签:语句 list 中取 SQL MyBatis size

需求:使用MyBatis进行开发时,在一个SQL语句中需要拼接list的大小。

大家都知道,当我们在MyBatis中写SQL时,如果需要遍历list,先对list进行非空判断的时候,可以加下面这行:

<if test="null != list and list.size != 0">SQL</if>

但是如果想在SQL中取到list.size的值,则比较麻烦。一般会想到如下:

<select id="getArticleIdByTags" parameterType="java.util.List" resultType="java.lang.Integer">
    SELECT id
    FROM table_name
    where 1=1
    <foreach collection="list" item="item" open="AND" separator="OR" close="GROUP BY id HAVING COUNT(*) >=">
        field1 = #{item.a} AND field2 = #{item.b}
    </foreach>
    #{list.size}
</select>

但是你会发现报错了,PersistenceExceptionUnsupportOperationException

因为list.size用#{}是取不出来的,需要用${},把#换成$就可以了。

使用#{}能够有效防止SQL注入,但是也有它的缺点,它会把传入的数据自动加上一个双引号,所以如果要的是数字的话,就会比较尴尬。

而${}可以直接解析出原本的数据,所以需要数值比较的话,还是要加${}

转载自https://www.jianshu.com/p/9d542c65c32c

标签:语句,list,中取,SQL,MyBatis,size
From: https://www.cnblogs.com/echohye/p/18473914

相关文章

  • 在centos7上安装mysql5.7
    1、此处是在MySQL官网获取的rpm包(也可直接在linux中使用yum获取这个rpm包到本地)   在MySQL官方网站的最底下找到这个此处选择的MySQL版本5.7.44,操作系统选Oracle Linux,OS版本选择linux7下载将下载好的二进制文件包上传到centos7中在windows系统中上传文件到虚拟机里......
  • 数据库系统原理——第三章 关系数据库标准语言SQL
    @目录1.SQL的特点2.SQL的组成3SQL语句3.1数据库的基本操作3.2基本表的定义、修改、删除3.3索引的建立与删除3.4数据更新3.5数据查询3.5.1单表查询3.5.2连接查询3.5.2.1内连接(INNERJOIN)3.5.2.2左连接(LEFTJOIN)3.5.2.3右连接(RIGHTJOIN)3.5.2.4全连接(FULLJOIN)3.5.3嵌套查询3.5.4集......
  • sql-function
    在SQLite中,除了LENGTH函数,还有许多其他内置函数,分类如下:字符串函数UPPER(string):将字符串转换为大写。LOWER(string):将字符串转换为小写。SUBSTR(string,start,length):返回从指定位置开始的子字符串。TRIM(string):删除字符串两端的空白字符。REPLACE(string,old......
  • MySQL基础函数的学习要点和步骤
    MySQL基础函数的学习要点和步骤可以归纳为以下几个方面:学习要点1.函数的概念:  -函数是一段可以直接被另一段程序调用的程序或代码。2.分类理解:  -字符串函数:如`CONCAT()`,`LOWER()`,`UPPER()`,`LPAD()`,`RPAD()`,`TRIM()`,`SUBSTRING()`等,用于处理字符串......
  • 震惊!MySQL竟然可以平滑从5.7.35升级到8.0.37
    一、前言好多网友问我有没有mysql升级的文章,今天它来了!数据库版本操作系统版本5.7.35CentOSLinuxrelease7.9.20098.0.37CentOSLinuxrelease7.9.2009二、升级方法选择in-place升级,顾名思义就是关闭现有版本MySQL,将二进制包替换成新版本并在现有数据目录上启动MySQL......
  • pg小工:pgsql的安装
    pg小工:pgsql的安装   安装系统:Centos7release7.5(Final) 三种安装方式1.二进制包安装,EnterpriseDB提供了两种PostgreSQL的二进制包,两种都无须编译安装,并且只提供到PostgreSQL10.X版本第一种:傻瓜向导二进制包下载地址:https://www.enterprisedb.com/downloads/pos......
  • MySQL数据库在Windows环境的配置
      本文介绍在Windows电脑中,下载、部署MySQL数据库的方法。  MySQL数据库可以说是最为常用的数据库之一了,在GIS领域中其也经常被用到。之前我们介绍过Redis、PostgreSQL、InfluxDB等多种数据库在Windows电脑中的下载、安装与运行方法,这里就再介绍一下MySQL数据库的配置......
  • 【重学 MySQL】七十、揭秘数据库对象,打造高效数据管理之旅
    【重学MySQL】七十、揭秘数据库对象,打造高效数据管理之旅数据库(Database)数据表(Table)视图(View)存储过程(StoredProcedure)触发器(Trigger)索引(Index)在MySQL中,数据库对象是用于存储、管理和操作数据的实体。这些对象在数据库设计中扮演着至关重要的角色,它们共同......
  • 【重学 MySQL】七十一、揭秘数据库魔法——深入探索并引入视图
    【重学MySQL】七十一、揭秘数据库魔法——深入探索并引入视图视图的定义视图的作用视图的注意事项在MySQL数据库中,视图(View)是一种非常强大且灵活的工具,它为用户提供了以更安全、更清晰的方式查看和管理数据的途径。视图的定义视图是一种虚拟表,其内容由S......
  • Ansible操作MySQL常用的几个模块
    1. mysql_user模块mysql_user模块用来添加,删除用户以及设置用户权限创建MySQL数据库的用户与口令(非root@localhost用户),直接通过playbooks中的案例来说明吧。-name:创建MySQL数据库用户--user_testmysql_user:#-----登陆数据库login_host:"localhost"......