mybatis-plus使用like与likeright方法查询信息,踩坑

先说结论,like 和 likeRight的区别就是 like: 填入query的参数两端加上通配符,会进行左右两端进行like匹配 likeRight:只给填入参数的右端加入通配符进行匹配。 所以使用的时候要搞清楚自己的需求,盲目使用like查询会造成隐患。

案例: 想要抽取 一串数字第7和8位组成是03的数据。 例子

  1. 2022010101
  2. 2022010203
  3. 2022010302
  4. 2022020102
  5. 2022020204
  6. 2022020301 结果应该是第3个和第6个。 然后我的like语句是
like("number", "______" + 03 + "%") //下划线_ 代表占位符,表示这个位置的数字随意,但是一个占位符表示只能有一个字符,意思表示为:前面6位数字随意。但第7,8位必须要03.

然而结果是第2,3,6个,这个结果导致我一系列操作直接全部迷惑操作,把数据全大变样。 最后知道原因,原来mybatisplus的like方法,会在执行sql的时候给参数前后都加上%,这就导致我的6个下划线失效, 所以数据混乱。 然后我换成likeRight就结果问题了,在找bug的时候,我从前端找到后端,从页面找到请求,再检查有没有写错,最后发现,数据库这里出错了,费了好大劲,太难了。 以后用like查询的时候可要用对了,还是没有系统的学习mybatisplus,基础不好所导致的问题。

经验分享 程序员 微信小程序 职场和发展