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>
相关推荐
码农飞哥9 分钟前
企业级RAG系统架构详解
java·人工智能·ai编程·rag·ai应用
Wang's Blog11 分钟前
Java框架快速入门: Spring Security+OAuth2之搭建授权服务器(依赖与表结构)
java·服务器·spring
土司大王12 分钟前
LeetCode hot100——4.寻找两个正序数组的中位数:Java 二分第K小 递归裁剪
java·算法·leetcode
dllxhcjla14 分钟前
SpringAI+DeepSeek大模型应用开发
java
小鱼干..25 分钟前
青少年ctf url
java
用户81818706274632 分钟前
第26章 Kafka vs RocketMQ vs RabbitMQ真实选型对比
java·后端
lv__pf34 分钟前
09-深入理解AQS之独占锁ReentrantLock源码分析【TL 并发 09】
java·开发语言
letisgo535 分钟前
JAVA 高级进阶18篇《生产级RAG:切分、检索、评估与Graph RAG全链路实战》
java·面试·检索增强·rag·graph rag
随遇而安zx38 分钟前
【并发】---Disruptor 原理、源码与实战 深度解析
java·并发·disruptor
Lyyaoo.42 分钟前
【二分查找】【困难】寻找两个有序数组的中位数
java·数据结构·算法