国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

淺談mybatis mapper.xml文件中$和#的區別

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

#{}表示一個占位符即?,可以有效防止sql注入。在使用時不需要關心參數值的類型,mybatis會自動進行java類型和jdbc類型的轉換。

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

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

${}可以將parameterType 傳入的內容拼接在sql中且不進行jdbc類型轉換。

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

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

對于order by排序,使用#{}將無法實現功能,應該寫成如下形式:

ORDER BY ${columnName}

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

CustomerExample customerExample=new CustomerExample();

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

補充知識: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 == @com.weather.weatherexpert.common.utils.City@XINZHOU.getName'><!--right--> area_table</if> where 1=1<if test='cityName == @com.weather.weatherexpert.common.utils.City@XINZHOU.getName'><!--right--> and city_name=#{cityName}</if>

淺談mybatis mapper.xml文件中$和#的區別

2 錯誤

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>

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

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

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 日韩一区二区三区四区 | 日韩女人做爰大片 | 一区二区不卡视频在线观看 | a高清免费毛片久久 | 中文字幕一区二区三区精彩视频 | 成年人网站黄 | 欧美成人综合在线 | 亚洲国产成人精彩精品 | 久久国产精品免费一区二区三区 | 国内精品久久久久久久久 | 日本免费一区视频 | 亚洲国产精品一区二区首页 | 久久青草网站 | 精品国产一区二区二三区在线观看 | 91无毒不卡| 免费观看黄色毛片 | 综合刺激网 | 夜色伊人 | 黄网站在线播放视频免费观看 | 久久国产精品久久 | 好妞操 | 亚洲成a人v大片在线观看 | 欧洲美女与男人做爰 | 国产成人亚洲日本精品 | 曰本女人色黄网站 | 毛片免费大全 | 精品欧美成人高清在线观看2021 | 手机毛片在线 | 国产高清av在线播放 | 久久综合久久精品 | 在线精品国产三级 | 久草福利社 | 国产91免费| 欧美一级成人毛片视频 | 国产欧美在线一区二区三区 | 亚洲不卡一区二区三区在线 | 手机看片午夜 | 日韩专区亚洲国产精品 | 成人欧美一区在线视频在线观看 | 国产v在线播放 | 精品日韩一区二区三区 |