java中有没有类似like的方法_利用MyBatis进行不同条件的like模糊查询的方法

之前一直是用MyBatis进行SQL查询时,一般都是用Generator逆向生产的代码来进行查询。

现在遇到了一个业务问题,我们需要进行对不同的条件分别进行模糊查询,首先我想到的就是根据对需要进行模糊查询的字段进行判断,然后调用Example的方式进行查询条件的注入。

对于String类型的数据可以有Like查询这个方法,但是Integer或者Long这种数据类型的话就没有了,得需要自己动手写。

但是呢,我利用Generator生成的代码Example方式进行模糊查询时确无法实现,原因不太清楚,但是感觉代码没问题。

于是,只能我们自己手动写SQL语句了。

但是呢,每个查询条件都写一个查询语句的话,简单归简单,但是太麻烦。

那么,我们能不能利用一个查询来实现对不同字段的模糊查询呢?

我的方法

1。首先,定义Search类,有查询字段Type,和查询条件Condition,利用这个类将数据传入SQL查询中。

public class SearchType {

private String type;

private String condition;

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public String getCondition() {

return condition;

}

public void setCondition(String condition) {

this.condition = condition;

}

}

定义好类后,我们在Service中调用Mapper查询方法

public List searchUser(String type,String condition) {

SearchType search = new SearchType();

search.setCondition(condition);

search.setType(type);

//模糊查询各字段

List list = userMapper.selectWithConditionLike(search);

return list;

}

这里的MKUser是我们查询结果后存储数据的类

下面看看Mapper.xml是如何实现的

select userid ,username ,we_name ,we_number ,tel_number ,updateTime ,invite_number ,purchased_total

from mk_user

where ${type} like CONCAT(CONCAT('%',#{condition}),'%')

关于为什么一个地方是${},另一个是#{},自己查询这两个的区别。

注意数据库中的字段跟MKUser类中字段的对应,

我利用BaseResultMap进行了对应。

这样就搞定了。

Mybaits Generator 模糊查询 (like)的使用方式

like 使用

使用like时如果不手动拼接 % 等上去的话很难达到模糊搜索的要求,默认生成的SQL语句如下:

如传入变量是 paramsValue

SELECT count(*) FROM table WHERE (table_a LIKE paramsValue)

由此可得,我们可以给传入的变量手动拼接 %,也就是说

paramsValue = "%" + paramsValue + "%"

之后再传入 则可以达到模糊匹配的效果,当然这种前后都加 % 的做法尽量避免使用,数据量大的情况下检索效果不会太好,因为会进行全表检索,而不使用索引。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值