最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年11月27日 12:34:29   作者:xingxinghann  
這篇文章主要介紹了淺談mybatis mapper.xml文件中$和#的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

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

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

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

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

<!-- 根據名稱模糊查詢用戶信息 -->
 <select id="selectUserByName" 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> 

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文件中$和#的區(qū)別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java ScheduledExecutorService的具體使用

    Java ScheduledExecutorService的具體使用

    ScheduledExecutorService有線程池的特性,也可以實現任務循環(huán)執(zhí)行,本文主要介紹了Java ScheduledExecutorService的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • DoytoQuery中關于N+1查詢問題解決方案詳解

    DoytoQuery中關于N+1查詢問題解決方案詳解

    這篇文章主要為大家介紹了DoytoQuery中關于N+1查詢問題解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Kotlin 接口與 Java8 新特性接口詳解

    Kotlin 接口與 Java8 新特性接口詳解

    這篇文章主要介紹了Kotlin 接口與 Java8 新特性接口,Kotlin的接口是可以包含屬性聲明。Kotlin默認的聲明是fianl 和public的。 Kotlin里嵌套的類默認并不是內部內,不包含對器外部類的隱式調用。下面我們來一起學習一下吧
    2019-06-06
  • Java多線程之讀寫鎖分離設計模式

    Java多線程之讀寫鎖分離設計模式

    這篇文章主要介紹了Java多線程讀寫鎖分離設計模式,主要利用Java到嗎完成read read 并行化、read write 不允許、write write 不允許幾項任務,需要的朋友可以參考一下
    2021-10-10
  • 使用Java進行圖像處理的一些基礎操作

    使用Java進行圖像處理的一些基礎操作

    這篇文章主要介紹了使用Java進行圖像處理的一些基礎操作,就載入和輸出相關的知識進行了講解,需要的朋友可以參考下
    2015-10-10
  • springboot3.x中Jakarta包無法引入的問題

    springboot3.x中Jakarta包無法引入的問題

    最近想將一些項目升級到springboot3.x和java17的時候,發(fā)現項目依賴中有Jakarta的包,但是代碼標紅提示沒有相關的類,本文就來介紹一下解決方法,感興趣的可以了解一下
    2024-02-02
  • 快速掌握SpringBoot應用的啟動入口

    快速掌握SpringBoot應用的啟動入口

    本篇并不是深究內置服務器的啟動過程,而是追溯Springboot啟動之前到底做了什么?它是如何與我們經常寫的@SpringBootApplication注解注釋的main方法類綁定起來的?對SpringBoot啟動入口相關知識感興趣的朋友一起看看吧
    2022-05-05
  • Java commons-httpclient如果實現get及post請求

    Java commons-httpclient如果實現get及post請求

    這篇文章主要介紹了Java commons-httpclient如果實現get及post請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java基礎之MapReduce框架總結與擴展知識點

    Java基礎之MapReduce框架總結與擴展知識點

    本章,是MapReduce的最終章,我在寫本章的時候,發(fā)現前面忘記介紹MpaTask與ReduceTask了,所以本章補上哈,另外還有兩個擴展的知識點,講完這些,我會對整個MapReduce進行總結一下,讓大家再次了解MapReduce的工作流程,更加清晰地認識MapReduce ,需要的朋友可以參考下
    2021-05-05
  • Java手寫簡易版HashMap的使用(存儲+查找)

    Java手寫簡易版HashMap的使用(存儲+查找)

    這篇文章主要介紹了Java手寫簡易版HashMap的使用(存儲+查找),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論

盘锦市| 澄迈县| 阳泉市| 微山县| 普洱| 西乌| 鄂托克旗| 临朐县| 池州市| 微山县| 元谋县| 塔城市| 中西区| 天峻县| 义马市| 平潭县| 襄汾县| 深圳市| 朝阳市| 社旗县| 孟津县| 漠河县| 阳原县| 通城县| 齐齐哈尔市| 肥东县| 时尚| 获嘉县| 安吉县| 英超| 工布江达县| 秦安县| 新沂市| 合作市| 全南县| 京山县| 宝鸡市| 绍兴县| 泰宁县| 徐州市| 洮南市|