Mybatis中#和$传参的区别及#和$的区别小结

\u8bb0\u5f55\u4e0bmybatis\u4e2d#\u548c$\u4f20\u53c2\u7684\u533a\u522b

#{a} \u4f1a\u6309\u7167\u7c7b\u578b\u66ff\u6362, \u5982\u679ca \u662fstring, \u90a3\u4e48\u6700\u540e\u7684\u7ed3\u679c\u4e3a\u2018ssss\u2019
${a}\u662f\u6587\u672c\u66ff\u6362\uff0c\u5982\u679ca\u662fString,\u90a3\u4e48\u6700\u540e\u7684\u7ed3\u679c\u4e5f\u4e3assss, ${}\u4e3b\u8981\u7528\u5728group by, order by \u540e\u9762

$\u4f20\u5165\u7684\u503c\u90fd\u662f\u5728\u8f6c\u5316\u5230\u67e5\u8be2\u8bed\u53e5\u65f6\u4e0d\u52a0\u5f15\u53f7\uff0c#\u8f6c\u5316\u662f\u8981\u52a0\u5f15\u53f7\u7684

使用#传入参数是,sql语句解析是会加上"",比如 select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是

select * from table where name = ‘小李’,就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的,

另外一种场景是,如果你要做动态的排序,比如 order by column,这个时候务必要用${},因为如果你使用了#{},那么打印出来的将会是
select * from table order by 'name' ,这样是没用,

目前来看,能用#就不要用$,

  • MyBatis涓#鍜$鐨勫尯鍒瑙
    绛旓細mybatis涓鐨#鍜$鐨勫尯鍒 鐩稿綋浜庡鏁版嵁 鍔犱笂 鍙屽紩鍙凤紝$鐩稿綋浜庣洿鎺ユ樉绀烘暟鎹 1. #灏嗕紶鍏ョ殑鏁版嵁閮藉綋鎴愪竴涓瓧绗︿覆锛屼細瀵硅嚜鍔ㄤ紶鍏ョ殑鏁版嵁鍔犱竴涓弻寮曞彿銆傚锛歰rder by #user_id#锛屽鏋滀紶鍏ョ殑鍊兼槸111,閭d箞瑙f瀽鎴恠ql鏃剁殑鍊间负order by "111", 濡傛灉浼犲叆鐨勫兼槸id锛屽垯瑙f瀽鎴愮殑sql涓簅rder by "id".2. $...
  • MyBatis涓鎬庢牱浣跨敤鍙嶅皠鑾峰彇SQL璇彞骞惰繘琛屾搷浣?
    绛旓細棣栧厛锛屾偍闇瑕佷粠MyBatis鐨勬槧灏勫櫒鎺ュ彛锛圡apper鎺ュ彛锛変腑鑾峰彇SQL璇彞銆傝繖閲屾垜浠亣璁炬偍宸茬粡瀹氫箟浜嗕竴涓槧灏勫櫒鎺ュ彛鍜岀浉搴旂殑XML鏄犲皠鏂囦欢銆備緥濡傦紝UserMapper鎺ュ彛鍜屽搴旂殑UserMapper.xml鏂囦欢銆傚湪MyBatis鐨勯厤缃枃浠讹紙渚嬪锛mybatis-config.xml锛変腑锛屽惎鐢ㄦ槧灏勫櫒鎺ュ彛鐨刴apperLocations灞炴э紝浠ヤ究MyBatis鍙互鎵惧埌XML鏄犲皠鏂囦欢锛歺m...
  • mybatis涓#鍜$鐨勫尯鍒強order by鐨剆ql娉ㄥ叆闂
    绛旓細1銆佸尯鍒 1锛#{}鐩稿綋浜巎dbc涓殑preparedstatement {}鏄粡杩囬缂栬瘧鐨,鏄畨鍏ㄧ殑,鑰${}鏄湭缁忚繃棰勭紪璇戠殑,浠呬粎鏄彇鍙橀噺鐨勫,鏄潪瀹夊叏鐨,瀛樺湪sql娉ㄥ叆.2锛${}鏄緭鍑哄彉閲忕殑鍊 {}鐨勬儏鍐,order by鏄偗瀹氬彧鑳界敤${}浜,鐢#{}浼氬涓' '瀵艰嚧sql璇彞澶辨晥.姝ゅ杩樻湁涓涓猯ike 璇彞鍚庝篃闇瑕佺敤${} 2銆乷rder b...
  • Mybatis 涓鐨 #{} 鍜 ${}鐨勫尯鍒槸浠涔?
    绛旓細濡傛灉鎮ㄦ弧鎰忥紝灏遍噰绾虫槸棰勭紪璇戝鐞嗭紝$濡傛灉鎮ㄦ弧鎰忥紝灏遍噰绾虫槸瀛楃涓叉浛鎹#濡傛灉鎮ㄦ弧鎰忥紝灏遍噰绾崇浉褰撴垜浠湪PreparedStatement涓殑锛燂紝鍦mybatis鐨勫簳灞備娇鐢≒reparedStatement鐨剆et鏂规硶璧嬪笺$濡傛灉鎮ㄦ弧鎰忥紝灏遍噰绾 灏辨槸鎶婄鍙锋浛鎹㈡垚鍙橀噺鐨勫笺備娇鐢#濡傛灉鎮ㄦ弧鎰忥紝灏遍噰绾冲彲浠ユ湁鏁堢殑闃叉SQL娉ㄥ叆锛屾彁楂樼郴缁熷畨鍏ㄦс傚笇鏈涜兘甯埌...
  • mybatis涓#鍜$鐨勫尯鍒
    绛旓細鍦ㄨ嫳璇紝Unicode寤鸿绉颁负numbersign锛屽彲鑳藉洜涓哄畠甯哥敤浜庤〃绀哄簭鏁帮紝鏃ヨ绉板畠涓衡滅暘鍙疯鍙封濄傞氬父瑙佷簬鎵嬫満鎷ㄥ彿閿洏锛屼篃鐢ㄤ簬鍦ㄧ綉椤典笂浠f浛閭涓殑@绗﹀彿闃叉琚姄鍙栦互璧峰埌淇濇姢閭鐨勪綔鐢ㄣ傚彟涓涓父鐢ㄤ簬琛ㄧず搴忔暟鐨勭鍙锋槸鈩栥$鏄編鍏冪鍙凤紝琛ㄧず缇庡厓銆傜編鍏冩槸缇庡浗鐨勮揣甯佸悕绉般傜編鍏冪焊甯佹闈富鏅浘妗堜负浜虹墿澶村儚锛屼富鑹茶皟...
  • Mybatis 涓鐨 #{} 鍜 ${}鐨勫尯鍒槸浠涔?
    绛旓細{}鏄缂栬瘧澶勭悊锛${}鏄瓧绗︿覆鏇挎崲銆倇}鐩稿綋鎴戜滑鍦≒reparedStatement涓殑锛燂紝鍦mybatis鐨勫簳灞備娇鐢≒reparedStatement鐨剆et鏂规硶璧嬪笺倇} 灏辨槸鎶婄鍙锋浛鎹㈡垚鍙橀噺鐨勫笺備娇鐢#{}鍙互鏈夋晥鐨勯槻姝QL娉ㄥ叆锛屾彁楂樼郴缁熷畨鍏ㄦс傛兂瑕佸叆琛岀▼搴忓憳鑾峰緱楂樿柂涔熼渶瑕佸湪缃戜笂澶氬涔狅紝鐗瑰埆鏄垰鍏ラ棬鐨勪汉锛屾壘姣斿榛戦┈绋嬪簭鍛樹箣绫荤殑瑙嗛澶...
  • MyBatis涓鍏充簬resultType鍜宺esultMap鐨勫尯鍒
    绛旓細涓銆佹杩 MyBatis涓鍦ㄦ煡璇㈣繘琛宻elect鏄犲皠鐨勬椂鍊欙紝杩斿洖绫诲瀷鍙互鐢╮esultType锛屼篃鍙互鐢╮esultMap锛宺esultType鏄洿鎺ヨ〃绀鸿繑鍥炵被鍨嬬殑锛岃宺esultMap鍒欐槸瀵瑰閮≧esultMap鐨勫紩鐢紝浣嗘槸resultType璺焤esultMap涓嶈兘鍚屾椂瀛樺湪銆傚湪MyBatis杩涜鏌ヨ鏄犲皠鏃讹紝鍏跺疄鏌ヨ鍑烘潵鐨勬瘡涓涓睘鎬ч兘鏄斁鍦ㄤ竴涓搴旂殑Map閲岄潰鐨勶紝鍏朵腑閿槸灞炴у悕锛...
  • mybatis涓鈥渕apper 鐨刵amespace鈥濇湁浠涔堢敤?
    绛旓細鍦mybatis涓锛屾槧灏勬枃浠朵腑鐨刵amespace鏄敤浜庣粦瀹欴ao鎺ュ彛鐨勶紝鍗抽潰鍚戞帴鍙g紪绋嬨傚綋浣犵殑namespace缁戝畾鎺ュ彛鍚庯紝浣犲彲浠ヤ笉鐢ㄥ啓鎺ュ彛瀹炵幇绫伙紝mybatis浼氶氳繃璇ョ粦瀹氳嚜鍔ㄥ府浣犳壘鍒板搴旇鎵ц鐨凷QL璇彞銆傚懡鍚嶇┖闂达紙Namespaces锛夊湪涔嬪墠鐗堟湰鐨 MyBatis 涓鏄彲閫夌殑锛屽鏄撳紩璧锋贩娣嗗洜姝ゆ槸娌℃湁鐩婂鐨勩傜幇鍦ㄧ殑鍛藉悕绌洪棿鍒欐槸蹇呴』鐨勶紝...
  • MyBatis涓鐨勫嚑绉嶆敞瑙f槧灏
    绛旓細1.鏅氭槧灏 Select("select * from mybatis_Student where id=#{id}")    public Student getStudent(int id);    Insert("insert into mybatis_Student (name, age,...
  • mybatis涓$鍜&鍖哄埆鏄粈涔?
    绛旓細鍦mybatis涓#鍜孠aTeX parse error: Expected 'EOF', got '#' at position 8: 鐨勪富瑕佸尯鍒槸锛#̲浼犲叆鐨勫弬鏁板湪SQL涓樉绀轰负瀛楃锛屼紶鍏ョ殑鍙傛暟鍦⊿qL涓洿鎺ユ樉绀轰负浼犲叆鐨勫硷紝$鏂瑰紡鏃犳硶闃叉Sql娉ㄥ叆銆侻yBatis 鏄竴娆句紭绉鐨勬寔涔呭眰妗嗘灦锛屽畠鏀寔瀹氬埗鍖 SQL銆佸瓨鍌ㄨ繃绋嬩互鍙婇珮绾ф槧灏勩侻yBatis 閬垮厤浜嗗嚑涔庢墍鏈夌殑...
  • 扩展阅读:mybatis嵌套子查询 ... mybatis interceptor ... mybatis-plus关联查询 ... mybatis 批量插数据 ... mybatis resultmap ... mybatis generator ... mybatis-spring ... mybatis中$和#区别 ... mybatis教程 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网