当前位置: 首页 > news >正文

mybatis中的极易出现错误用法

1.背景

今天下午开会的时候,领导分配了一个任务说需要去完成一个商品录入的功能,可以通过模糊查询去识别物品,当时听到这个之后就觉得好简单,索性就交给手底下的实习生去做,刚好可以让他去练练手吧,想着能来实习的实习生毕竟还是有一定的水平的,不然也不会说到这实习,于是信心满满的交给他了。

2.交互过程

跟他讲完需求点之后,给了他两个小时的时间去完成这个接口的实现,他也信心满满的跟我讲,用不了两个小时,一个小时足以,于是我就去忙我手头的任务去了,他就在那敲代码。

3.交付过程

眼看马上要三个小时了,我问他怎么还没有提交呢,是不是有什么卡点,然后他就跟我说,感觉自己的逻辑没有问题啊,就是简单的crud,没什么难度啊,为什么收不到信息呢,举个例子,我输入电脑,就会给出,戴尔电脑,苹果电脑,联想电脑,等等,结果他写的这个,输进去之后没反应,于是我就让他把现有的代码git上去,我帮他看一下,看了对应的业务语句,除了可能存在空指针的异常外,其他的代码业务也还正常,于是就在xml里面看,果然映入眼帘的语句

<select id="queryByName" resultType="Product">select * from product where name like '%#(name)%'
</select>

我就知道问题的所在了,给你们打印一下sql的日志让你们看一下,就明白了,看着这样写没毛病啊为什么出不来呢

select * from product where name like '%?%'

不是大哥,这模糊查询也不能这么模糊吧,于是我又问了他一遍知道问题所在吗,他当时给我的解释是,会不会是自己前面传参的时候,传的对象不对,导致没有获取到真正的name,大哥,你好歹来实习了,这个问题要是还能翻车,那不是要被劝返,然后我就让他去日志看报错,才恍然大明白。

4.解决方案

不说你们应该也知道了吧,加一个concat这个问题就解决了

<select id="queryByname" resultType="Product">select * from product where name like concat ('%',#{name},'%')
</select>

看着是一个小问题,但是有的时候就是会眼高手低。 

http://www.lryc.cn/news/605091.html

相关文章:

  • Chroma安装教程
  • uni-app webview的message监听不生效(uni.postmessage is not a function)
  • 明智运用C++异常规范(Exception Specifications)
  • 监测预警系统:让园区更高效、更安全、更智能
  • [Python] -进阶理解10- 用 Python 实现简易爬虫框架
  • Android Animation Transitions:打造流畅的用户体验
  • 性能优化(一):时间分片(Time Slicing):让你的应用在高负载下“永不卡顿”的秘密
  • vue模块化导入
  • DooTask教育行业功能:开启高效学习协作新篇章
  • 学习嵌入式第十五天
  • 【PostgreSQL内核学习:WindowAgg 帧优化与节点去重】
  • 李宏毅2025《机器学习》-第九讲:大型语言模型评测的困境与“古德哈特定律”**
  • Linux 中,命令查看系统版本和内核信息
  • LNN+XGBoost:优化多层供应链订购:缓解牛鞭效应
  • 力扣209:长度最小的子数组
  • 光谱相机自动调焦曝光控制
  • 基于Rust与HDFS、YARN、Hue、ZooKeeper、MySQL
  • Linux 系统原理深度剖析与技术实践:从内核架构到前沿应用
  • npm run dev 启动项目 报Error: listen EACCES: permission denied 0.0.0.0:80 解决方法
  • Spring boot 打包成docker image 镜像
  • vue create 项目名 和 npm init vue@latest 创建vue项目的不同
  • 3GPP TS 38.331 V18.6.0 (2025-06)中文版
  • CMS框架GetShell
  • Web3:以太坊虚拟机
  • 网络的学习 2 Socket
  • 发那科机器人P点位置号码自动变更功能为禁用状态
  • python基础:用户输入和 while 循环
  • 【机器学习】pycharm使用SSH SFTP 远程连接 ubuntu服务器 进行开发+调试+数据训练
  • IBus vs. Fcitx5:一场 Linux 输入法框架的正面交锋
  • 在 Kubernetes 上部署 Label Studio