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

mybatisplus?@Select注解中拼寫動(dòng)態(tài)sql異常問題的解決

 更新時(shí)間:2021年12月03日 17:07:01   作者:姚華軍  
這篇文章主要介紹了mybatisplus?@Select注解中拼寫動(dòng)態(tài)sql異常問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatisplus @Select注解中拼寫動(dòng)態(tài)sql異常

使用mybatisplus后,手寫SQL語句很少了,偶爾使用@Select時(shí),

之前一直用實(shí)體類傳遞參數(shù),完全能夠正常使用,今天換成了參數(shù)傳遞,報(bào)下面的錯(cuò)誤

  @Select("<script>"
            +"select * from mi_taobao where 1=1"
            +"<if test='status != null'>"
            +"and status = #{status}"
            +"</if>"
            +"</script>")
    public List<Taobao> getTaobao(Integer status);

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘status' in 'class java.lang.Interger'

納悶了,我就傳個(gè)普通參數(shù),和getter方法有啥關(guān)系呢,查找了一下資料

出現(xiàn)原因

這里出現(xiàn)的問題是在mapper方法中定義的參數(shù) 與 實(shí)體中定義的屬性不一致 導(dǎo)致的,不知道m(xù)ybatis在想什么。

解決方案

mapper層加@Param(“xxxx”)注解即可,修改如下就可以了

  @Select("<script>"
            +"select * from mi_taobao where 1=1"
            +"<if test='status != null'>"
            +"and status = #{status}"
            +"</if>"
            +"</script>")
    public List<Taobao> getTaobao(@Param("status") Integer status);

在注解上使用動(dòng)態(tài)SQL(@select使用if)

用script標(biāo)簽包圍

然后像xml語法一樣書寫

@Select({"<script>",
                "SELECT * FROM tbl_order",
                "WHERE 1=1",
                "<when test='title!=null'>",
                "AND mydate = #{mydate}",
                "</when>",
                "</script>"})

用Provider去實(shí)現(xiàn)SQL拼接

例如:

public class OrderProvider {
    private final String TBL_ORDER = "tbl_order"; 
    public String queryOrderByParam(OrderPara param) {
        SQL sql = new SQL().SELECT("*").FROM(TBL_ORDER);
        String room = param.getRoom();
        if (StringUtils.hasText(room)) {
            sql.WHERE("room LIKE #{room}");
        }
        Date myDate = param.getMyDate();
        if (myDate != null) {
            sql.WHERE("mydate LIKE #{mydate}");
        }
        return sql.toString();
    }
}
 
public interface OrderDAO {    
    @SelectProvider(type = OrderProvider.class, method = "queryOrderByParam")
    List<Order> queryOrderByParam(OrderParam param); 
}

注意:方式1有個(gè)隱患就是當(dāng)傳入?yún)?shù)為空的時(shí)候,可能會(huì)造成全表查詢。

復(fù)雜SQL用方式2會(huì)比較靈活(當(dāng)然,并不建議寫復(fù)雜SQL),而且可以抽象成通用的基類,使每個(gè)DAO都可以通過這個(gè)基類實(shí)現(xiàn)基本的通用查詢,原理類似Spring JDBC Template。

說明

如果XML元素嵌入在<script>XML元素中,則可以在注釋值中為動(dòng)態(tài)SQL使用XML元素:

@Select("<script>SELECT ...</script>")

但是使用<include>元素會(huì)觸發(fā)SQL Mapper配置解析異常,由以下原因引起:

org.apache.ibatis.builder.BuilderException: Unknown element in SQL statement. at org.apache.ibatis.scripting.xmltags.XMLScriptBuilder.parseDynamicTags

如果nodeHandlers在課堂中檢查方法org.apache.ibatis.builder.BuilderException,將注意到支持的元素有:

  • trim
  • where
  • set
  • foreach
  • if
  • choose
  • when
  • otherwise
  • bind

然而,包括基于注釋的查詢中的片段是不可能的。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Java中finalize析構(gòu)方法的作用詳解

    關(guān)于Java中finalize析構(gòu)方法的作用詳解

    構(gòu)造方法用于創(chuàng)建和初始化類對(duì)象,也就是說,構(gòu)造方法負(fù)責(zé)”生出“一個(gè)類對(duì)象,并可以在對(duì)象出生時(shí)進(jìn)行必要的操作,在這篇文章中會(huì)給大家簡(jiǎn)單介紹一下析構(gòu)方法,需要的朋友可以參考下
    2023-05-05
  • 詳解Java線程同步器CountDownLatch

    詳解Java線程同步器CountDownLatch

    這篇文章主要介紹了Java線程同步器CountDownLatch的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • Springboot關(guān)于自定義stater的yml無法提示問題解決方案

    Springboot關(guān)于自定義stater的yml無法提示問題解決方案

    這篇文章主要介紹了Springboot關(guān)于自定義stater的yml無法提示問題及解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • java五子棋小游戲?qū)崿F(xiàn)代碼

    java五子棋小游戲?qū)崿F(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java五子棋實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 關(guān)于@Value注解取不到值的幾種情況

    關(guān)于@Value注解取不到值的幾種情況

    這篇文章主要介紹了關(guān)于@Value注解取不到值的幾種情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 注解@CrossOrigin解決跨域的問題

    注解@CrossOrigin解決跨域的問題

    這篇文章主要介紹了注解@CrossOrigin解決跨域的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 使用Spring Data JPA的坑點(diǎn)記錄總結(jié)

    使用Spring Data JPA的坑點(diǎn)記錄總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于使用Spring Data JPA的一些坑點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • JPA findById方法和getOne方法的區(qū)別說明

    JPA findById方法和getOne方法的區(qū)別說明

    這篇文章主要介紹了JPA findById方法和getOne方法的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2021-08-08
  • java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主的示例代碼

    java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主的示例代碼

    這篇文章主要介紹了java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java之SpringBoot-Thymeleaf詳情

    Java之SpringBoot-Thymeleaf詳情

    聊Thymeleaf,需要知道為什么到了SpringBoot中就不用JSP了?這跟SpringBoot打包方式有點(diǎn)關(guān)系,SpringBoot項(xiàng)目打包是jar包,下面文章小編就對(duì)此做一個(gè)詳細(xì)介紹,需要的朋友可以參考一下
    2021-09-09

最新評(píng)論

安陆市| 遵义市| 泰和县| 福州市| 花莲市| 百色市| 余姚市| 独山县| 缙云县| 梧州市| 榕江县| 三江| 宿松县| 盐山县| 石河子市| 东莞市| 奈曼旗| 榆社县| 明光市| 安吉县| 墨竹工卡县| 大厂| 潼南县| 太保市| 库尔勒市| 蚌埠市| 祁门县| 北安市| 四子王旗| 崇文区| 武山县| 邢台县| 盐山县| 清涧县| 扶绥县| 昌乐县| 右玉县| 云龙县| 苏尼特右旗| 宁国市| 沾益县|