mybatis mapper.xml文件 $和#
1、#在很大程度上可以避免字符串拼接的SQL注入。
2、$在SQL中是取String类型的字符串,直接显示在SQL中;#以字符串的显示出现在SQL中;
eg: select *from student where id = ${ID} => select *from student where id = 2;
select *from student where id = #{ID} => select *from student where id = '2'。
在应用中遇到的坑:
我是几个月前,应公司转型的需要,在老大画的巨饼下从C开发转向了Java应用。开始了Java的探索之旅~~~~
由于是生手,mybatis也是不熟悉,也就在大佬眼里最简单的mybatis的使用中到了坑。
在一个查询API中,程序将查询的字段和where条件拼装成String类型字符串,用注解的方式将其传到mapper.xml中,刚开始我用的是 #{sql_field}、#{sql_where}
分别获取SQL的字段、where条件,测试的时候,查询结果total一直为0。由于是一对多联合查询,我一个是写xml配置文件时resultMap写的有问题,将一对多
改为单表查询。total结果还是0。
最后,无意见想起了公司架构大佬提过类似“SQL注入值mybatis$、#”的话题,想起的取值还不一样。用 ${sql_field}、${sql_where}获取SQL的字段、where条件。
debug>>调试,能够完美的获取到数据库中的值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】