1. 程式人生 > >mybatis mapper.xml文件 $和#

mybatis mapper.xml文件 $和#

註解 獲取 方式 ring total bsp ava 程序 res

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>>調試,能夠完美的獲取到值。

mybatis mapper.xml文件 $和#