sqlserver模糊查询问题

针对mybatisplus

最早写法

复制代码
lqw.eq(OrgCodeView::getPositionEnabled, 1).like(StringUtils.isNotBlank(req.getPositionCode()), OrgCodeView::getPositionCode, req.getPositionCode())....

失败 关键是 其他字段汉字还行,但是PO07 code输入07 查不出来数据

中间写法

复制代码
lqw.eq(OrgCodeView::getPositionEnabled, 1).and(StringUtils.isNotBlank(req.getPositionCode()), i -> i.apply("PositionCode LIKE '%' + {0} + '%'", req.getPositionCode()))

这样不推荐!

  • MyBatis-Plus 的 apply("... {0} ...", param) 底层生成的是预编译 SQL(PreparedStatement),占位符 {0} 会被替换为 ?
  • 引发sql注入风险

===========

改为

// 1. 在 Java 代码中处理好参数

String positionCode = req.getPositionCode();

String likeCode = StringUtils.isNotBlank(positionCode) ? "%" + positionCode + "%" : null; // 2. 使用 Wrapper 构建查询 lqw.eq(OrgCodeView::getPositionEnabled, 1) .and(StringUtils.isNotBlank(likeCode), i -> i.like("PositionCode", likeCode));

这个没测试 ,需要的可以试下

最后写法 使用过没发现问题

复制代码
<if test="req.positionCode!=null and req.positionCode!='' ">
and PositionCode like '%'+ #{req.positionCode}+'%'
</if>
相关推荐
星蓝_starblue21 分钟前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
都叫我大帅哥34 分钟前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java
江南十四行43 分钟前
Spring框架核心(上)——IoC控制反转与DI依赖注入详解
java·后端·spring
fb_123452 小时前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
三8442 小时前
sqli-labs1-10通关笔记
数据库
码智社3 小时前
JSON 零基础到资深全体系教程
java·json
wgego4 小时前
基础的反序列化一些总结(php和java)
java·开发语言·笔记
BullSmall4 小时前
Another Redis Desktop Manager(ARDM)下载指南
数据库·redis·缓存
SelectDB4 小时前
Apache Doris 倒排索引工作原理:全文检索提速 59 倍,点查提速 14 倍
数据库
码农颜4 小时前
5.1.1 原⼦性
数据库·mysql