色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

淺談mybatis mapper.xml文件中$和#的區(qū)別

瀏覽:96日期:2023-10-21 11:57:55

#{}表示一個(gè)占位符即?,可以有效防止sql注入。在使用時(shí)不需要關(guān)心參數(shù)值的類型,mybatis會自動進(jìn)行java類型和jdbc類型的轉(zhuǎn)換。

#{}可以接收簡單類型值或pojo屬性值,如果傳入簡單類型值,#{}括號中可以是任意名稱。

<!-- 根據(jù)名稱模糊查詢用戶信息 --> <select parameterType='String' resultType='user'> select * from user where username like CONCAT(CONCAT(’%’, #{name}), ’%’) </select>

${}可以將parameterType 傳入的內(nèi)容拼接在sql中且不進(jìn)行jdbc類型轉(zhuǎn)換。

${}可以接收簡單類型值或pojo屬性值,如果傳入簡單類型值,${}括號中名稱只能是value。

<!-- 根據(jù)名稱模糊查詢用戶信息 --> <select parameterType='string' resultType='user'> select * from user where username like ’%${value}%’ </select>

對于order by排序,使用#{}將無法實(shí)現(xiàn)功能,應(yīng)該寫成如下形式:

ORDER BY ${columnName}

另外,對于mybatis逆向工程生成的代碼中,進(jìn)行模糊查詢調(diào)用andXxxLike()方法時(shí),需要手動加%,如下:

CustomerExample customerExample=new CustomerExample();

customerExample.or().andNameLike('%'+name+'%');

補(bǔ)充知識:Mybatis條件if test使用枚舉值

1 正確

package com.weather.weatherexpert.common.utils; /** * <p>Title: </p> * <p>Description: </p> * * @Author * @CreateTime */public enum City { XINZHOU(100002,'忻州'), DATONG(100003,'大同'), TAIYUAN(100001,'太原'); private final Integer code; private final String name; City(Integer value, String desc) { this.code = value; this.name = desc; } public Integer getCode() { return code; } public String getName() { return name; }}

xml:

<!--<if test='cityName == @com.weather.weatherexpert.common.utils.City.XINZHOU@getName'>&lt;!&ndash;wrong,java.lang.ClassNotFoundException: Unable to resolve class: com.weather.weatherexpert.common.utils.City.XINZHOU&ndash;&gt;--><!--<if test='cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU@getName'>&lt;!&ndash;wrong,[org.apache.ibatis.ognl.ParseException: Encountered ' '@' '@ '' at line 1, column 65.&ndash;&gt;--><if test='cityName == @[email protected]'><!--right--> area_table</if> where 1=1<if test='cityName == @[email protected]'><!--right--> and city_name=#{cityName}</if>

淺談mybatis mapper.xml文件中$和#的區(qū)別

2 錯(cuò)誤

package com.weather.weatherexpert.common.utils; /** * <p>Title: </p> * <p>Description: </p> * * @Author * @CreateTime */public class CityClass { public static enum CityEnum { XINZHOU(100002, '忻州'), DATONG(100003, '大同'), TAIYUAN(100001, '太原'); private final Integer code; private final String name; CityEnum(Integer value, String desc) { this.code = value; this.name = desc; } public Integer getCode() { return code; } public String getName() { return name; } }}

xml:

/* Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression ’cityName == @com.weather.weatherexpert.common.utils.CityClass@CityEnum.XINZHOU.getName’. Cause: org.apache.ibatis.ognl.OgnlException: Could not get static field CityEnum from class com.weather.weatherexpert.common.utils.CityClass [java.lang.NoSuchFieldException: CityEnum]*/ <if test='cityName == @com.weather.weatherexpert.common.utils.CityClass@CityEnum.XINZHOU.getName'><!--wrong--> area_table </if>

可見,直接定義的枚舉類可以正常使用,在類中定義的枚舉類這樣使用會報(bào)錯(cuò),可能方法還沒有找到。

以上這篇淺談mybatis mapper.xml文件中$和#的區(qū)別就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 国内久久精品视频 | 丝袜精品 欧美 亚洲 自拍 | 国产男女猛烈无遮档免费视频网站 | 欧美在线 | 欧美 | 九九99久久精品国产 | 成人午夜两性视频免费看 | 在线视频一二三区2021不卡 | 欧美另类久久久精品 | 成人影院一区二区三区 | 女人张开腿等男人桶免费视频 | 久久久久久久99精品免费 | 亚洲成人欧美 | 久久久精品国产免费观看同学 | 国产成人在线观看免费网站 | 亚洲黄网址 | 一级毛片视屏 | 亚洲男人的天堂久久香蕉 | 国产精品久久久久久久久久日本 | 成人免费视频一区 | 67194成人手机在线 | 久草观看视频 | 欧美很黄视频在线观看 | 亚洲午夜影视 | 国产精品99r8在线观看 | 九九热视频精品 | 亚洲综合视频在线观看 | 99ri在线精品视频 | 欧美顶级毛片在线播放小说 | 亚洲一级毛片中文字幕 | 97在线免费 | 国产色a在线观看 | 天堂1在线观看 | 在线视频 一区二区 | 亚洲最新网站 | 久久午夜影院 | 欧美性群另类交 | 久久中文字幕久久久久 | jyzzjyzzjyzz日本在线观看 | 国产在线一二三区 | 永久免费精品视频 | 久久精品国产精品亚洲艾 |