Mybatis plus中一个框多条件查询 SQL拼接

遇到多条件查询时,只用框架自带的方法搞不定,只能自己写方法拼接

EntityWrapper<YcejShopEntity> wrapper = new EntityWrapper<>();
String queryStr = QueryUtils.toFuzzyQueryStr(username.toString());
String filterSql = "(username like ‘" + queryStr+"‘ or username like ‘"+queryStr+"‘ )";
wrapper.addFilter(filterSql);

Page<SysUserEntity> page = this.selectPage(

new Query<SysUserEntity>(params).getPage(),
wrapper
);

工具类:

public static String toFuzzyQueryStr(String str){
char[] chars = str.toCharArray();
StringBuilder sb = new StringBuilder();
if(chars.length > 0){
sb.append("%");
}

for(int i=0;i<chars.length;i++){
sb.append(chars[i]).append("%");
}
return sb.toString();
}

打印结果如下:

原文地址:https://www.cnblogs.com/sanhao/p/9756061.html

时间: 2024-08-19 13:28:13

Mybatis plus中一个框多条件查询 SQL拼接的相关文章

必须知道的sql编写技巧。多条件查询不拼接字符串&#183;的写法

在做项目中,我们经常遇到复杂的查询方法,要根据用户的输入,判断某个参数是否合法,合法的话才能当作过滤条件,我们通常的做法是把查询SQL赋值给一个字符串变量,然后根据判断条件动态的拼接where条件进行查询.下面来简单说一下写SQL中遇到的问题和解决办法.  一.不确定字段名,而产生的SQL字符串拼接 比如,有个公司要做一个系统,要支持多语言,这个时候我们就要将语音信息存储在数据库中.然后,根据客户选择查询对应的语言字段,进行显示.下面我们来模拟这个场景,打开SQL Server,新建SysLan

mybatis中使用mysql的模糊查询字符串拼接(like)

方法一: <!-- 根据hid,hanme,grade,模糊查询医院信息--> <select id="getHospitalLike" resultType="com.hand.hand.domain.Hospital"> SELECT * FROM hospital where hid like '%'||#{selectword}||'%' or hname like '%'||#{selectword}||'%' or grade l

linq 多条件查询 where 拼接+分页

首先定义一个静态类 1 public static class QueryAssembly 2 { 3 /// <summary> 4 /// 返回true 5 /// </summary> 6 /// <typeparam name="T"></typeparam> 7 /// <returns></returns> 8 public static Expression<Func<T, bool>

一个MySQL 单表查询SQL,引起一次“故事”

一.描述故事的过程是这个样子的,MySQL 数据库有一张40多G的大表,开发人员执行了一个单表查询,结果我就收到了一个磁盘空间满的告警.一下子就不淡定了,谁在搞事情,脑海里各种可能行想了一遍,想到的最多的就是ibtmp1爆了,第一时间线上看一下,查到了最大的那个文件,结果和想的一样.这里我们要看SQL是怎么写的,表结构是什么样子,然后和官网对比,MySQL在查询的时候有很多可能会使用磁盘临时表,包括表连接.排序.大字段等等. 二.解决方法临时解决方法:1.临时扩一下硬盘2.直接重启 终结解决方案

一个表空间使用率查询sql的优化

话不多说,直接上运行计划: SQL> set lines 500; SQL> set pagesize 9999; SQL> set long 9999; SQL> select * from table(dbms_xplan.display_cursor('41348610',null,'advanced')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------

java动态条件查询sql语句

select*fromtablewhere1=1<if test="tUserId!=null and tUserId!=''">and t_user_id=#{tUserId}</if><if test="toolCode!=null and toolCode!=''">and .tool_code=#{toolCode}</if><if test="workCode!=null and workCo

Linq to Sql 多条件查询

Linq To Sql 多条件查询 string proName = this.txtName.Text.Trim();string lowPrice = this.txtLowPrice.Text.Trim();string highPrice = this.txtHighPrice.Text.Trim(); decimal? lowPrice1 = null, highPrice1 = null;if (!string.IsNullOrEmpty(lowPrice)){        low

Mybatis中的条件查询。createCriteria example里面的条件

之前用Mybatis框架反向的实体,还有实体里面的Example,之前只是知道Example里面放的是条件查询的方法,可以一直不知道怎么用,到今天才开始知道怎么简单的用. 在我们前台查询的时候会有许多的条件传过来:先看个例子: ContactExample example = new ContactExample(); ContactExample.Criteria cri = example.createCriteria(); // //////////////////////////////

开发中遇到的问题---【使用mybatis时 有一个sql查询不到结果 日志也显示查询为o 但是从日志中取出执行的sql到数据库客户端手动执行,可以查到数据】

问题:使用mybatis时 有一个sql查询不到结果 日志也显示查询为o 但是从日志中取出执行的sql到数据库客户端手动执行,可以查到数据: 原因:MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(自动在前后加单引号)也就是说,他把你传入的字符串并没有当做多个值,而是当做一个大的字符串,所以查询不到值 而MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理: 解决方案:将查询条件中的“#”替换成“$”. <select id="fi