日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis通配符

發(fā)布時間:2023/12/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis通配符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Mybatis通配符

??在mybatis中的$與#都是在sql中動態(tài)的傳入參數。

???????select id,name,age from student where name=#{name}?

????這個name是動態(tài)的,可變的。當你傳入什么樣的值,就會根據你傳入的值執(zhí)行sql語句。??????? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

1.?MyBatis中使用parameterType向SQL語句傳參,parameterType后的類型可以是基本類型int,String,HashMap和java自定義類型等

2.在xml寫SQL都是用#,如#{param}。但是有時會看到用$的時候,如${param}

3. 那么$ 和 # ,有什么區(qū)別呢?

????1) 通配符 "#" 是將傳入的值當做字符串的形式,如:

????select id,name,age from user where id=#{id}

?????????當前端把id值1,傳入到后臺的時候,就相當于?(#{}?傳入值時,sql解析時,參數是帶引號的)? ????

  • ????select id,name,age from student where id ='1'.
  • ????2)通配符 "$" 是將傳入的數據直接顯示生成sql語句,如:

    ????select id, name, age from user where id=${id}

    ?????????當前端把id值1,傳入到后臺的時候,就相當于?(${}穿入值,sql解析時,參數是不帶引號的)

    ????select id,name,age from student where id = 1.

    ?????3) 使用 "#" 可以很大程度上防止sql注入。(語句的拼接)? ??????? ??

    ????????????#{}: 解析為一個 JDBC 預編譯語句(prepared statement)的參數標記符,一個 #{ } 被解析為一個參數占位符?。

    ? ??????????${}: 僅僅為一個純碎的 string 替換,在動態(tài) SQL 解析階段將會進行變量替換。

    ?????eg: ?select?id,name,age?from student where name=#{name} ? -- name='cy'

    ? ? ? ?? ? ?select?id,name,age?from student where name=${name} ? ?-- name=cy

    ?????4)? 但是如果使用在order by 中就需要使用 "$".

    ?????5)? 在大多數情況下還是經常使用"#",但在不同情況下必須使用"$".?

    總結

    以上是生活随笔為你收集整理的Mybatis通配符的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。