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

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

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

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

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

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

  @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'

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

出現(xiàn)原因

這里出現(xiàn)的問題是在mapper方法中定義的參數(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);

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

用script標簽包圍

然后像xml語法一樣書寫

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

用Provider去實現(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有個隱患就是當傳入?yún)?shù)為空的時候,可能會造成全表查詢。

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

說明

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

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

但是使用<include>元素會觸發(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

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

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

相關(guān)文章

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

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

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

    詳解Java線程同步器CountDownLatch

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

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

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

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

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

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

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

    注解@CrossOrigin解決跨域的問題

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

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

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

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

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

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

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

    Java之SpringBoot-Thymeleaf詳情

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

最新評論

阳谷县| 绥中县| 慈溪市| 彰化县| 夏邑县| 金平| 云阳县| 长宁区| 明水县| 宁波市| 开封市| 乡城县| 绥德县| 鄯善县| 利津县| 安庆市| 临西县| 锦州市| 板桥市| 偏关县| 乌拉特中旗| 江山市| 海阳市| 象州县| 陆丰市| 抚松县| 合作市| 柘荣县| 平凉市| 正定县| 汉中市| 彭泽县| 东方市| 阆中市| 长沙县| 信宜市| 宁德市| 宁南县| 汽车| 和政县| 呼玛县|