Mybatis mysql 一个搜索框多个字段模糊查询 OR

根据搜索框给定的关键词,模糊搜索用户名和账号都匹配的用户集合

<select id="list" parameterType="com.user.UserInfo" resultType="com.user.UserInfo">
        SELECT
            *
        FROM
            user
        WHERE
            1 = 1
            <if test="searchParam != null and searchParam != ‘‘">
                AND CONCAT(user_name, user_account) LIKE CONCAT(‘%‘,#{searchParam},‘%‘)
            </if>
 </select>

但是以上查询中,如果user_name 或者 user_account 中任意一个属性的所有数据为null时(比如account字段的所有值均未赋值,默认值为null),即使另一个中包含查询的数据,也查询不到数据。

两种解决方法:

1.给可能为null的查询字段设置默认值,空字符串或者其他;

2.改用or连接多个模糊查询

AND CONCAT(user_name, user_account) LIKE CONCAT(‘%‘,#{searchParam},‘%‘)

改为

AND user_name like CONCAT(‘%‘,#{searchParam},‘%‘)
or user_account like CONCAT(‘%‘,#{searchParam},‘%‘)

原文地址:https://www.cnblogs.com/mike-mei/p/11692199.html

时间: 2024-08-29 03:21:08

Mybatis mysql 一个搜索框多个字段模糊查询 OR的相关文章

mysql搜索多表多字段模糊查询

select parttime_job_business_assessments.*, u.nick_name, u.mobile, pj.name as job_name, b.name as business_name from `parttime_job_business_assessments` left join `users` as `u` on `u`.`id` = `parttime_job_business_assessments`.`user_id` left join `p

一个搜索框的背后

要想做好一个让用户喜欢的搜索功能太难了. 首先,不说界面兼容问题,假设在IE6+.FF.Chrome.Safari.Opera等浏览器下显示正常,不出现错位,字体和搜索框距离大小不一等问题. 您所使用的或者开发的搜索功能包含以下几点呢? 1)进入首页,光标默认在搜索框内.光标离开搜索框,搜索框内显示“请输入关键词”等. 2)当不输入任何关键词,点击搜索仍然会停留在当前页.这里不建议弹出对话框的方式提示用户“请输入关键字”等字样. 3)输入关键词,出现关键词模糊匹配提示下拉框,其中模糊匹配包括英文

如何在html添加一个搜索框和一个按钮?

<INPUT TYPE="text" id="k"><INPUT TYPE="button" VALUE="ok" ONCLICK="xx()">   <SCRIPT LANGUAGE="JavaScript">   <!--   function xx(){ var k=document.getElementById("k"

MySQL单表多字段模糊查询解决方法

在最近的一个项目需要实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段 例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍.然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录. 可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词.如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此

Mybatis入门学习篇(三)之模糊查询的两种写法

在上一讲(Mybatis入门学习篇(二)之基于注解的增删改查)中,需要用到模糊查询,比如我想查找所有含有'zjh'的Student的信息.如果是在数据库中,那么我们可以方便的使用通配符%:select * from student where name like '%zjh%' .但是如果在mybatis中直接像sql中那样,就会报错.遂百度,无果,偶然在一篇帖子中看到,遂记录下来,以备后用. 方法一: 在要查询的字符串合适位置加上%,如这里的'zjh'就应该为'%zjh%'.这是一个很管用的方

Mybatis+MySql 一个标签中执行多条sql语句 这个坑 ,我心中有一句MMP

解决办法 转自网友: 亲测 解决了问题@ MySql默认是不支持这种骚操作的,但是并不代表不能实现,只需要在jdbc的配置文件中稍做配置: driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/airipo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=trueusername=

hibernate一值多字段模糊查询

public Page getCoordByPage(Page queryHandler, TCoordinate conditions) { DetachedCriteria dc = DetachedCriteria.forClass(TCoordinate.class); if (conditions.getTAxis() != null) { dc.add(Restrictions.eq("TAxis", conditions.getTAxis())); } if(condit

关于mongodb按照字段模糊查询方法

模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1  --port 17017  test db.test_info.find({"tname": {$regex: '测试', $options:'i'}}) db.test_info.find({"tname": {$regex:/测试.*/i}})

Qt之自定义搜索框——QLineEdit里增加一个Layout,还不影响正常输入文字(好像是一种比较通吃的方法)

简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void addAction(QAction * action, ActionPosition position) 在QLineEdit的前/后添加部件,ActionPosition表示部件所在方位. QAction * addAction(const QIcon & icon, ActionPosition