mybatis 使用concat 模糊查询方式

目录
  • 使用concat 模糊查询
    • 本举例
    • 注意
  • 模糊查询使用concat('%',#{str},'%')出错

使用concat 模糊查询

<select id="queryByKeyWord" resultType="com.mingdutech.xelerator.eln.dto.ApparatusDto">
        select distinct b.*
        from base_apparatus b
        left join base_apparatus_column c
        on b.ID = c.apparatus_id
        <if test="keyWord != null">
            <where>
                CONCAT( IFNULL(b.name,''),
                IFNULL(code,''),
                IFNULL(serial,''),
                IFNULL(location,''),
                IFNULL(remark,''),
                IFNULL(b.create_user,''),
                IFNULL(b.update_user,''),
                IFNULL(c.field_value,''),
                IFNULL(batch_no,'') )
                like CONCAT('%',#{keyWord},'%')
            </where>
        </if>
    </select>

concat() 函数用于将多个字符串拼接成一个字符串

本举例

keyWord为空查询所有,keyWord不为空,检索所有contact中所有字段匹配的内容。

注意

所有字段需要IFNULL判断,否则某字段为空可能会导致查询结果丢失一条记录

模糊查询使用concat('%',#{str},'%')出错

经过我一套乱七八糟毫无思路地查找后,发现不是mybatis的原因,原来是SQL server不支持concat函数,直接用加号连接就好

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

(0)

相关推荐

  • 利用MyBatis进行不同条件的like模糊查询的方法

    之前一直是用MyBatis进行SQL查询时,一般都是用Generator逆向生产的代码来进行查询. 现在遇到了一个业务问题,我们需要进行对不同的条件分别进行模糊查询,首先我想到的就是根据对需要进行模糊查询的字段进行判断,然后调用Example的方式进行查询条件的注入. 对于String类型的数据可以有Like查询这个方法,但是Integer或者Long这种数据类型的话就没有了,得需要自己动手写. 但是呢,我利用Generator生成的代码Example方式进行模糊查询时确无法实现,原因不太清楚,

  • MyBatis实现模糊查询的几种方式

    在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: 起初我在MyBatis的mapper文件中是这样写的: <select id="searchStudents" resultType="com.example.entity.StudentEntity" parameterType="com.exampl

  • MyBatis的模糊查询mapper.xml的写法讲解

    目录 MyBatis模糊查询mapper.xml的写法 1.直接传参 2.针对MySQL数据库的语句 3.适用于所有数据库的则采用MyBatis的bind元素 MyBatis在xml中模糊查询的常用的3种方式 MyBatis模糊查询mapper.xml的写法 模糊查询语句不建议使用${}的方式,还是建议采用MyBatis自带的#{}方式,#{}是预加载的方式运行的,比较安全,${}方式可以用但是有SQL注入的风险!!! 1.直接传参 在controller类中 String id = "%&qu

  • Mybatis 中 Oracle 的拼接模糊查询及用法详解

    一.结论 这里先给大家看一下结论 Oracle 中,拼接模糊查询的正确写法 SELECT A.USER_ID, A.USER_NAME FROM USER A AND A.USER_NAME like concat(concat('%','w'),'%') 或者 AND A.USER_NAME like '%' || 'w' || '%' Mybatis 中,拼接模糊查询的正确写法 <select id="selectByName" resultMap="BaseRes

  • mybatis 使用concat 模糊查询方式

    目录 使用concat 模糊查询 本举例 注意 模糊查询使用concat('%',#{str},'%')出错 使用concat 模糊查询 <select id="queryByKeyWord" resultType="com.mingdutech.xelerator.eln.dto.ApparatusDto"> select distinct b.* from base_apparatus b left join base_apparatus_colum

  • Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce

  • MyBatis中的模糊查询语句

    其实就只有一条sql语句 <select id = "search" resultType = "material"> select material_id,material_num,material_name,material_type,material_model,id from material where material_name like '%${value}%' or material_num like '%${value}%' </

  • python中数据库like模糊查询方式

    在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%. 将在Python中执行的sql语句改为: sql = "SELECT * FROM table_test WHERE value LIKE '%%%%%s%%%%'" % test_value 执行成功,print出SQL语句之后为: SELECT * FROM table_test WHERE value LIKE '%%public%%' Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使

  • Mybatis CURD及模糊查询功能的实现

    命名空间namespace: 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致! 1.查询(select) select: 接口中的方法名与映射文件中的SQL语句ID 一一对应 id parameterType resultType 案例:根据id查询用户 1.写接口(在UserMapper中添加对应的方法) public interface UserMapper { //根据ID查询用户 User getuserByID(int id); } 2.U

  • Mybatis mysql模糊查询方式(CONCAT多个字段)及bug

    目录 Mybatis mysql模糊查询及bug 解决方案:一 解决方案:二 mybatis多个字段如何模糊查询一个值 Mybatis mysql模糊查询及bug 先看下如下xml SELECT t.id, t.mobile, t.account_name FROM t_account t WHERE 1=1 <if test="keyWord !=null and keyWord !=''"> and CONCAT(t.id,t.mobile,t.account_name

  • mybatis分页及模糊查询功能实现

    mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybatis 的 Rowbounds 来实现. 通过(自定义类型)传参 来实现分页: 映射文件: <select id="findListBypage" parameterType="cn.wh.util.PageUtil" resultType="Role"> select * from t_role limit #{index},#{size} &l

  • vue和js中实现模糊查询方式

    目录 vue和js实现模糊查询 如何实现? 方法1 方法2 方法3 正则表达式实现模糊查询 vue和js实现模糊查询 先来看效果图 这种数据量少的场景适用于前端实现模糊查询 如何实现? <template> <div class="container"> <div class="search-bar"> <el-input v-model="inputVal" placeholder="请输入图

  • Mybatis和Mybatis-Plus时间范围查询方式

    一.mysql 1.传入时间范围参数类型是字符串 <if test="startTime!=null and startTime.trim() neq ''"> and date_format(create_time,'%Y-%m-%d %H:%i:%s') >= str_to_date(#{startTime},'%Y-%m-%d %H:%i:%s') </if> <if test="endTime!=null and endTime.t

  • mybatis like模糊查询特殊字符报错转义处理方式

    目录 like模糊查询特殊字符报错转义处理 方案1 方案2 like模糊查询中包含有特殊字符(_.\.%) 处理 注意 like模糊查询特殊字符报错转义处理 方案1     <if test="projectName!=null and projectName!=''">             <bind name="projectName_" value="'%'+projectName+'%'"/>        

随机推荐