欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

2. UserMapper.xml映射文件添加標(biāo)簽

<!-- 使用#定義參數(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í),我們可以寫全類名,也可以寫別名。

        下表就是一些數(shù)據(jù)類型對(duì)應(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. 添加測(cè)試方法

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

4. 運(yùn)行結(jié)果

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

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

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

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

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

2. 修改測(cè)試方法

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

3. 運(yùn)行結(jié)果

 #和$的區(qū)別:

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

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

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

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

<!-- 使用<bind>標(biāo)簽定義參數(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. 運(yùn)行結(jié)果

四、聚合查詢

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

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

2. UserMapper.xml添加標(biāo)簽

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

3. 添加測(cè)試方法

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

4. 運(yùn)行結(jié)果

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

五、主鍵回填

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

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

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

2. UserMapper.xml添加標(biāo)簽

<!-- 主鍵回填 -->
    <insert id="add2" parameterType="com.mybatisstudy.pojo.User">
        <!-- keyProperty:主鍵屬性名,keyColumn:主鍵列名,resultType:主鍵類型,order:執(zhí)行時(shí)機(jī) -->
        <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. 添加測(cè)試方法

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

4. 運(yùn)行結(jié)果

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

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

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

相關(guān)文章

  • Java解壓zip文件完整代碼分享

    Java解壓zip文件完整代碼分享

    這篇文章主要介紹了Java解壓zip文件完整代碼分享,向大家分享了兩部分代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • SpringBoot項(xiàng)目整合攔截器詳解

    SpringBoot項(xiàng)目整合攔截器詳解

    這篇文章主要介紹了SpringBoot項(xiàng)目整合攔截器詳解,java里的攔截器是動(dòng)態(tài)攔截Action調(diào)用的對(duì)象,它提供了一種機(jī)制可以使開發(fā)者在一個(gè)Action執(zhí)行的前后執(zhí)行一段代碼,攔截器用于在某個(gè)方法或者字段被訪問之前進(jìn)行攔截,然后再之前或者之后加入某些操作,需要的朋友可以參考下
    2023-10-10
  • 解決window.location.href之后session丟失的問題

    解決window.location.href之后session丟失的問題

    今天小編就為大家分享一篇關(guān)于解決window.location.href之后session丟失的問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    使用@CachePut?更新數(shù)據(jù)庫和更新緩存

    這篇文章主要介紹了使用@CachePut?更新數(shù)據(jù)庫和更新緩存方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java8 ArrayList之forEach的使用

    Java8 ArrayList之forEach的使用

    這篇文章主要介紹了Java8 ArrayList之forEach的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JPA配置方式+逆向工程映射到Entity實(shí)體類

    JPA配置方式+逆向工程映射到Entity實(shí)體類

    這篇文章主要介紹了JPA配置方式+逆向工程映射到Entity實(shí)體類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實(shí)現(xiàn)斗地主小游戲

    Java實(shí)現(xiàn)斗地主小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)斗地主小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Log4j日志記錄框架配置及用法解析

    Log4j日志記錄框架配置及用法解析

    這篇文章主要介紹了Log4j日志記錄框架配置及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java設(shè)計(jì)模式之抽象工廠模式淺析講解

    Java設(shè)計(jì)模式之抽象工廠模式淺析講解

    當(dāng)系統(tǒng)所提供的工廠所需生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中屬于不同類型的具體產(chǎn)品時(shí)需要使用抽象工廠模式,抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態(tài)
    2022-08-08
  • Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步

    Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步

    這篇文章主要為大家介紹了Spring?Cloud微服務(wù)架構(gòu)Sentinel數(shù)據(jù)雙向同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評(píng)論