返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis如何使用正则模糊匹配多个数据
  • 949
分享到

Mybatis如何使用正则模糊匹配多个数据

2024-04-02 19:04:59 949人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录使用正则模糊匹配多个数据背景mybaits正则匹配mybatis多字段模糊匹配同一个值CityDAOXML使用正则模糊匹配多个数据 背景 有这样一个需求,需要模糊匹配一个List

使用正则模糊匹配多个数据

背景

有这样一个需求,需要模糊匹配一个List<String>的所有元素,如果采用LIKE则需要写很多个语句,这时候其实可以采用正则匹配

mybaits正则匹配

Mysql模糊匹配姓名为a、b、c的所有学生

select * from table where name REGEXP 'a|b|c'

那么用mybatis怎么写呢?我们第一时间可能会这样写:

<select id="selectAll" resultMap="BaseResultMap" parameterType="java.util.List">
    select *
    from student
    where name REGEXP
    <foreach collection="list" item="item" open="'" close="'" separator="|">
            #{item}
    </foreach>
</select>

但这样是错误的,因为翻译sql,语句是

select * from student where name REGEXP ' ? | ? | ? '

不能在SQL语句中使用占位符?

正确的SQL应该是以下两种:

select * from student where name REGEXP ?
select * from student where name REGEXP CONCAT_WS('|',?,?,?)

对于前一个来说,占位符的数据应该在Java代码中拼接完成;对于后面一个,CONCAT_WS的参数应该在foreach标签中完成

<select id="selectAll" resultMap="BaseResultMap" parameterType="java.util.List">
    select *
    from student
    where name REGEXP CONCAT_WS('|',
    <foreach collection="list" item="item" open="" close="" separator=",">
        #{item}
    </foreach>
    )
</select>

Mybatis多字段模糊匹配同一个值

CityDAO

    List<Map<String, Object>> findByMap(Map<String, Object>map);
    List<Map<String, Object>> findByMap2(Map<String, Object>map);

XML

使用concat将多个字段拼接之后在进行模糊查询,相比第一种更推荐第二种,执行效率更好

  <select id="findByMap" resultType="java.util.Map">
        SELECT id,pid as pIDDD,city_name,type FROM city
        WHERE 1=1
        <if test="keyWord != null and keyWord != ''">
            AND pid LIKE concat('%',#{keyWord},'%')
            OR city_name LIKE concat('%',#{keyWord},'%')
            OR type LIKE concat('%',#{keyWord},'%')
        </if>
    </select>

    <select id="findByMap2" resultType="java.util.Map">
        SELECT id,pid as pIDDD,city_name,type FROM city
        WHERE 1=1
        <if test="keyWord != null and keyWord != ''">
            AND CONCAT(IFNULL(pid,''),IFNULL(city_name,''),IFNULL(type,'')) LIKE concat('%',#{keyWord},'%')
        </if>
    </select>

特别提醒:由于CONCAT中只要有一个为NULL,则会返回NULL,这将导致你查不到正确数据。为了确保不为NULL,使用 IFNULL判断下就可以了

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Mybatis如何使用正则模糊匹配多个数据

本文链接: https://lsjlt.com/news/163227.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Mybatis如何使用正则模糊匹配多个数据
    目录使用正则模糊匹配多个数据背景mybaits正则匹配Mybatis多字段模糊匹配同一个值CityDAOXML使用正则模糊匹配多个数据 背景 有这样一个需求,需要模糊匹配一个List...
    99+
    2024-04-02
  • mybatis模糊匹配和正则
    模糊匹配<select id="findByName" parameterType="string" resultType="Student"> ...
    99+
    2024-04-02
  • 如何解决js正则匹配多个全部数据问题
    这篇文章给大家分享的是有关如何解决js正则匹配多个全部数据问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求:获取所有title里的内容正则表达式后面加g表示多次匹配方式一:...
    99+
    2024-04-02
  • 如何用 Golang 正则匹配多个单词或字符串?
    golang 正则表达式使用管道符 | 来匹配多个单词或字符串,将各个选项作为逻辑 or 表达式分隔开来。例如:匹配 "fox" 或 "dog":fox|dog匹配 "quick"、"b...
    99+
    2024-05-14
    golang 正则 python
  • PHP中的preg_match_all()函数:如何使用正则表达式匹配多个字符串
    PHP中的preg_match_all()函数:如何使用正则表达式匹配多个字符串,需要具体代码示例正则表达式是一种用来描述文本模式的工具,能够用来匹配、搜索或替换文本中符合某种模式的字符串。PHP中的preg_match_all()函数是一...
    99+
    2023-11-04
    PHP 正则表达式 preg_match_all()
  • Mybatis如何解决sql中like通配符模糊匹配问题
    目录sql中like通配符模糊匹配问题将查询条件通过功能类处理后台Contronller获得查询条件mapper.xml中对应的使用方法使用like实现模糊匹配方式一方式二方式三sq...
    99+
    2024-04-02
  • 如何使用正则匹配最后一个字符串详解
    前几天遇到一个需求,输入的是 <user> <user> <name>a</name> </...
    99+
    2024-04-02
  • 数据库MySQL 通配符与模式匹配正则表达式
    今天一个同事说他写了一个sql语句查询没有结果,他是这样写的 SELECT * FROM Persons WHERE City&n...
    99+
    2024-04-02
  • 如何在Python中使用正则表达式进行模式匹配
    正则表达式是一种强大的文本匹配工具,可以在Python中使用re模块来进行模式匹配。以下是使用正则表达式进行模式匹配的一般步骤:1. 导入re模块:首先,需要导入re模块,使用import re语句。2. 创建正则表达式:使用re模块的co...
    99+
    2024-02-22
    Python 正则表达式 匹配
  • php如何用正则匹配某个字符并删除
    这篇文章主要介绍了php如何用正则匹配某个字符并删除的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何用正则匹配某个字符并删除文章都会有所收获,下面我们一起来看看吧。两种方法:1、用preg_replac...
    99+
    2023-06-30
  • 如何使用PHP进行正则表达式匹配?
    正则表达式是一种强大的文本处理工具,它允许您在文本中搜索具有特定模式的字符串,并进行替换或提取。在 PHP 中,正则表达式使用 preg 系列函数,包括 preg_match、preg_match_all、preg_replace 等等。本...
    99+
    2023-05-23
    PHP正则表达式 匹配字符串 preg函数
  • 正则表达式如何分别匹配多个括号中的值
    可以使用正则表达式中的分组来分别匹配多个括号中的值。首先,使用圆括号将要匹配的内容括起来,形成一个分组。例如,要匹配多个小括号中的值...
    99+
    2023-08-18
    正则表达式
  • MySQL中如何使用正则表达式进行数据查询和匹配
    在MySQL中,可以使用正则表达式进行数据查询和匹配,可以使用LIKE和REGEXP两种方式。 使用LIKE操作符进行模糊匹配,但...
    99+
    2024-03-06
    MySQL
  • ORACLE正则匹配查询LIKE查询多个值检索数据库对象
    字符串’^198[0-9]$’可以匹配‘1980-1989’,如果希望统计出公司那些员工是80年~89年入职的,就可以使用如下的SQL...
    99+
    2024-04-02
  • php如何利用正则只匹配汉字
    这篇文章主要介绍“php如何利用正则只匹配汉字”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何利用正则只匹配汉字”文章能帮助大家解决问题。在php中,可以利用正则表达式“/[\x{4e00}...
    99+
    2023-07-05
  • php正则函数如何实现匹配替换
    本篇内容主要讲解“php正则函数如何实现匹配替换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php正则函数如何实现匹配替换”吧!php正则函数实现匹配替换的方法:1、创建一个PHP示例文件;2...
    99+
    2023-06-25
  • 如何使用CSS属性值正则匹配选择器
    这篇文章给大家分享的是有关如何使用CSS属性值正则匹配选择器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。属性值正则匹配选择器包括下面3种:[attr^="val"][attr$="...
    99+
    2023-06-08
  • 怎么使用正则匹配最后一个字符串
    这篇文章主要介绍了怎么使用正则匹配最后一个字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前几天遇到一个需求,输入的是<user>  &n...
    99+
    2023-06-14
  • 利用正则表达式匹配浮点型数据
    目录前言:正则表达式Java代码附:正则表达式(同时匹配整型数和浮点数)总结前言: 在开发中我们常常会使用到正则表达式,但很奇怪的是,每次你在使用正则表达式的时候你都发现你不会写,不...
    99+
    2024-04-02
  • SQL多表联合查询时如何采用字段模糊匹配
    目录先说一下背景和要求方法一方法二方法三先说一下背景和要求 背景:由于业务或是其他不描述的原因的问题导致原有存储的数据发生变动,与现有数据有差别,但还是能勉强看明白数据内容。 要求:实现A表的名称字段和B表的名称字段要模...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作