先说结论,like 和 likeRight的区别就是
like: 填入query的参数两端加上通配符,会进行左右两端进行like匹配
likeRight:只给填入参数的右端加入通配符进行匹配。
所以使用的时候要搞清楚自己的需求,盲目使用like查询会造成隐患。
案例:
想要抽取 一串数字第7和8位组成是03的数据。
例子
- 2022010101
- 2022010203
- 2022010302
- 2022020102
- 2022020204
- 2022020301
结果应该是第3个和第6个。
然后我的like语句是
like("number", "______" + 03 + "%") //下划线_ 代表占位符,表示这个位置的数字随意,但是一个占位符表示只能有一个字符,意思表示为:前面6位数字随意。但第7,8位必须要03.
然而结果是第2,3,6个,这个结果导致我一系列操作直接全部迷惑操作,把数据全大变样。
最后知道原因,原来mybatisplus的like方法,会在执行sql的时候给参数前后都加上%,这就导致我的6个下划线失效, 所以数据混乱。
然后我换成likeRight就结果问题了,在找bug的时候,我从前端找到后端,从页面找到请求,再检查有没有写错,最后发现,数据库这里出错了,费了好大劲,太难了。
以后用like查询的时候可要用对了,还是没有系统的学习mybatisplus,基础不好所导致的问题。