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

      

猜你喜欢

转载自www.cnblogs.com/tree-top/p/10858461.html
今日推荐