4 回答

TA貢獻1850條經驗 獲得超11個贊
value是不是可能包含xml格式的東西,<![CDATA[ ....]]>,這個在xml里表示該部分內容不會被xml解析器解析。
CDATA[ ${value 如果value是sql語句,那這里就是個動態的sql語句了,最終會執行這條sql語句,select from student where id = #{id} 如果你這個id也傳入個sql語句,這里就會把它當成一個查詢值了<update id = "excute" parameterType="java.lang.String">
<![CDATA[ ${value}]]>
</update><select id = "excute" parameterType="java.lang.String">
select * from student where id = #{id}
</select >include<iostream>
using namespace std;
char *deletechar(char *a)
{int len=strlen(a);
char *b=new char();
int k=0;
for(int i=0;i<len;i++)
{if(a[i]>='0' && a[i]<='9')
{b[k]=a[i];k++;}

TA貢獻2021條經驗 獲得超8個贊
#{},和 ${}傳參的區別如下:
使用#傳入參數是,sql語句解析是會加上"",當成字符串來解析,這樣相比于$的好處是比較明顯對的吧,#{}傳參能防止sql注入,如果你傳入的參數為 單引號',那么如果使用${},這種方式 那么是會報錯的
另外一種場景是,如果要做動態的排序,比如 order by column,這個時候務必要用${}
select * from table order by 'name' ,這樣是沒用
目前來看,能用#就不要用$,

TA貢獻1864條經驗 獲得超6個贊
include<iostream>
using namespace std;
char *deletechar(char *a)
{
int len=strlen(a);
char *b=new char();
int k=0;
for(int i=0;i<len;i++)
{
if(a[i]>='0' && a[i]<='9')
{
b[k]=a[i];
k++;
}
}
添加回答
舉報