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>>调试,能够完美的获取到数据库中的值。

      

posted @   伍壹贰  阅读(331)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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】
点击右上角即可分享
微信分享提示