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

Mybatis模糊查詢之三種定義參數(shù)方法和聚合查詢、主鍵回填實現(xiàn)方法

 更新時間:2023年03月27日 15:17:45   作者:會洗碗的CV工程師  
這篇文章主要介紹了Mybatis模糊查詢之三種定義參數(shù)方法和聚合查詢、主鍵回填實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、使用#定義參數(shù)

1. 持久層接口添加根據(jù)名字內(nèi)容模糊查詢方法

// 根據(jù)名字內(nèi)容模糊查詢
    List<User> findByNameLike(String username);

2. UserMapper.xml映射文件添加標簽

<!-- 使用#定義參數(shù) -->
    <select id="findByNameLike" parameterType="string"             
    resultType="com.mybatisstudy.pojo.User">
        select * from user where username like #{name}
    </select>

        我們看到在映射文件中,parameterType的值為 string 而沒有寫java.lang.String ,這是為什么呢?參數(shù)/返回值類型為基本數(shù)據(jù)類型/包裝類/String等類型時,我們可以寫全類名,也可以寫別名。

        下表就是一些數(shù)據(jù)類型對應(yīng)的別名

數(shù)據(jù)類型

別名
byte_byte
long_long
short_short
int_int
int_integer
double_double
float_float
boolean_boolean
Stringstring
Bytebyte
Longlong
Shortshort
Intergerint / interger
Doubledouble
Floatfloat
Booleanboolean
Datedate
BigDecimaldecimal / bigdecimal
Objectobject
Mapmap
HashMaphashmap
Listlist
ArrayListarraylist
Collectioncollection
Iteratoriterator

3. 添加測試方法

// 測試根據(jù)名字模糊查詢
    @Test
    public void testFindByNameLike(){
        String like = "%l%";
        List<User> list = userMapper.findByNameLike(like);
 
        list.forEach(System.out::println);
    }

4. 運行結(jié)果

OK,這里是成功查詢出來了,并且控制臺打印日志也和我們的參數(shù)一致 

二、使用$定義參數(shù)

模糊查詢?nèi)绻幌朐谡{(diào)用方法時參數(shù)加%,可以使用拼接參數(shù)的方式設(shè)置Sql:

1. UserMapper.xml映射文件更改標簽內(nèi)容

<!-- 使用$定義參數(shù) -->
    <select id="findByNameLike" resultType="com.mybatisstudy.pojo.User" parameterType="string">
        select * from user where username like '%${value}%'
    </select>

2. 修改測試方法

// 測試根據(jù)名字模糊查詢
    @Test
    public void testFindByNameLike(){
        String like = "l";
        List<User> list = userMapper.findByNameLike(like);
 
        list.forEach(System.out::println);
    }

3. 運行結(jié)果

 #和$的區(qū)別:

#表示sql模板的占位符,$表示將字符串拼接到sql模板中。#可以防止sql注入,一般能用#就不用$。${}內(nèi)部的參數(shù)名必須寫value。

三、使用<bind>標簽定義參數(shù)

如果使用 # 還不想在調(diào)用方法的參數(shù)中添加 % ,可以使用 <bind> , <bind> 允許我們在 Sql語句以外創(chuàng)建一個變量,并可以將其綁定到當前的Sql語句中。用法如下:

1. UserMapper.xml映射文件更改標簽內(nèi)容

<!-- 使用<bind>標簽定義參數(shù) -->
    <select id="findByNameLike" parameterType="String" resultType="com.mybatisstudy.pojo.User">
        <bind name="likeName" value="'%' + username + '%'"/>
        select * from user where username like #{likeName}
    </select>

2. 運行結(jié)果

四、聚合查詢

1. 持久層接口添加查詢所有用戶個數(shù)方法

// 查詢用戶總數(shù)
    int findCount();

2. UserMapper.xml添加標簽

<!-- 聚合查詢 -->
    <select id="findCount" resultType="int">
        select count(id) from user
    </select>

3. 添加測試方法

// 測試聚合查詢方法
    @Test
    public void testFindCount(){
        System.out.println(userMapper.findCount());
    }

4. 運行結(jié)果

還是比較可靠的,確實查詢出來了用戶總數(shù) 

五、主鍵回填

        有時我們需要獲取新插入數(shù)據(jù)的主鍵值。如果數(shù)據(jù)庫中主鍵是自增的,這時我們就需要使用MyBatis的主鍵回填功能。

1. 持久層接口添加新增用戶方法

// 主鍵回填-新增用戶
    void add2(User user);

2. UserMapper.xml添加標簽

<!-- 主鍵回填 -->
    <insert id="add2" parameterType="com.mybatisstudy.pojo.User">
        <!-- keyProperty:主鍵屬性名,keyColumn:主鍵列名,resultType:主鍵類型,order:執(zhí)行時機 -->
        <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>
        insert into user(username,sex,address)
        values (#{username},#{sex},#{address})
    </insert>

        SELECT LAST_INSERT_ID():查詢剛剛插入的記錄的主鍵值,只適用于自增主鍵,且必須和insert語句一起執(zhí)行。

3. 添加測試方法

// 測試主鍵回填功能
    @Test
    public void testAdd2(){
        User user = new User("Lions","man","Beijing");
        userMapper.add2(user);
 
        session.commit();
        System.out.println(user.getId());
    }

4. 運行結(jié)果

        好,控制臺是成功顯示添加了,用戶id為11,那我們看看表里面是否成功添加了 

        確實是成功添加了,ok,本篇文章到此為止了,感謝小伙伴的瀏覽,順便點擊下面投一下票囖,看看您是否有學(xué)到了呢 

到此這篇關(guān)于Mybatis模糊查詢之三種定義參數(shù)方法和聚合查詢、主鍵回填實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Mybatis模糊查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java中使用泛型實現(xiàn)快速排序算法的方法

    詳解Java中使用泛型實現(xiàn)快速排序算法的方法

    這篇文章主要介紹了Java中使用泛型實現(xiàn)快速排序算法的方法,快速排序的平均時間復(fù)雜度為(n\log n),文中的方法立足于基礎(chǔ)而并沒有考慮優(yōu)化處理,需要的朋友可以參考下
    2016-05-05
  • SpringBoot如何優(yōu)雅實現(xiàn)接口參數(shù)驗證

    SpringBoot如何優(yōu)雅實現(xiàn)接口參數(shù)驗證

    為了保證參數(shù)的正確性,我們需要使用參數(shù)驗證機制,來檢測并處理傳入的參數(shù)格式是否符合規(guī)范,所以本文就來和大家聊聊如何優(yōu)雅實現(xiàn)接口參數(shù)驗證吧
    2023-08-08
  • Java?Io?File文件操作基礎(chǔ)教程

    Java?Io?File文件操作基礎(chǔ)教程

    這篇文章主要介紹了Java?Io?File文件操作,在這里需要注意File只能訪問文件以及文件系統(tǒng)的元數(shù)據(jù)。如果你想讀寫文件內(nèi)容,需要使用FileInputStream、FileOutputStream或者RandomAccessFile,需要的朋友可以參考下
    2022-05-05
  • selenium高效應(yīng)對Web頁面元素刷新的實例講解

    selenium高效應(yīng)對Web頁面元素刷新的實例講解

    今天小編就為大家分享一篇selenium高效應(yīng)對Web頁面元素刷新的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解SpringBoot如何統(tǒng)一處理返回的信息

    詳解SpringBoot如何統(tǒng)一處理返回的信息

    現(xiàn)在的項目是前后端開發(fā)的居多,那么我們怎么定義接口返回的數(shù)據(jù),怎么使用?Spring?Boot?來統(tǒng)一處理返回的信息呢,本文就來和大家簡單講講
    2023-06-06
  • druid的borrow行為方法源碼解析

    druid的borrow行為方法源碼解析

    這篇文章主要為大家介紹了druid的borrow行為方法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • idea關(guān)閉vim編輯模式的操作

    idea關(guān)閉vim編輯模式的操作

    這篇文章主要介紹了idea關(guān)閉vim編輯模式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • spring?@value無法取值多個properties文件的解決

    spring?@value無法取值多個properties文件的解決

    這篇文章主要介紹了spring?@value無法取值多個properties文件的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java案例實戰(zhàn)之字符串轉(zhuǎn)換為二進制

    java案例實戰(zhàn)之字符串轉(zhuǎn)換為二進制

    最近遇到個需求,要求編寫一個程序,從鍵盤錄入一個字符串,將字符串轉(zhuǎn)換為二進制數(shù),下面這篇文章主要給大家介紹了關(guān)于java字符串轉(zhuǎn)換為二進制的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 一文搞清楚Java中Comparable和Comparator的區(qū)別

    一文搞清楚Java中Comparable和Comparator的區(qū)別

    Java中的Comparable和Comparator都是用于集合排序的接口,但它們有明顯的區(qū)別,文中通過一些實例代碼詳細介紹了Java中Comparable和Comparator的區(qū)別,感興趣的同學(xué)跟著小編一起學(xué)習(xí)吧
    2023-05-05

最新評論

安阳市| 丹寨县| 宜丰县| 仲巴县| 周至县| 寻甸| 共和县| 驻马店市| 丹东市| 丽江市| 如皋市| 晴隆县| 长海县| 石城县| 北海市| 南岸区| 北川| 贞丰县| 南汇区| 陆河县| 化州市| 确山县| 宜丰县| 青铜峡市| 武川县| 佛学| 西贡区| 昌江| 阳西县| 汾阳市| 永清县| 水富县| 友谊县| 三江| 津市市| 文安县| 峡江县| 武邑县| 马尔康县| 莆田市| 平凉市|