亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis-Plus內(nèi)置接口方法的具體使用

 更新時(shí)間:2023年12月21日 14:53:46   作者:云村小威  
java開發(fā)應(yīng)用程序與數(shù)據(jù)庫交互使用比較多的就是mybatisPlus接口,本文主要介紹了MyBatis-Plus內(nèi)置接口方法的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

Service CRUD接口

Service CRUD 接口說明:

  • 通用 Service CRUD 封裝IService接口,進(jìn)一步封裝 CRUD 采用 get 查詢單行 remove 刪除 list 查詢集合 page 分頁 前綴命名方式區(qū)分 Mapper 層避免混淆,

  • 泛型 T 為任意實(shí)體對象

1.1 Save

// 插入一條記錄(選擇字段,策略插入)
boolean save(T entity);
// 插入(批量)
boolean saveBatch(Collection<T> entityList);
// 插入(批量)
boolean saveBatch(Collection<T> entityList, int batchSize);

參數(shù)說明

類型參數(shù)名描述
Tentity實(shí)體對象
Collection<T>entityList實(shí)體對象集合
intbatchSize插入批次數(shù)量

1.2 SaveOrUpdate

// TableId 注解存在更新記錄,否插入一條記錄
boolean saveOrUpdate(T entity);
// 根據(jù)updateWrapper嘗試更新,否繼續(xù)執(zhí)行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList);
// 批量修改插入
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

參數(shù)說明

類型參數(shù)名描述
Tentity實(shí)體對象
Wrapper<T>updateWrapper實(shí)體對象封裝操作類 UpdateWrapper
Collection<T>entityList實(shí)體對象集合
intbatchSize插入批次數(shù)量

1.3 Remove

// 根據(jù) queryWrapper 設(shè)置的條件,刪除記錄
boolean remove(Wrapper<T> queryWrapper);
// 根據(jù) ID 刪除
boolean removeById(Serializable id);
// 根據(jù) columnMap 條件,刪除記錄
boolean removeByMap(Map<String, Object> columnMap);
// 刪除(根據(jù)ID 批量刪除)
boolean removeByIds(Collection<? extends Serializable> idList);

參數(shù)說明

類型參數(shù)名描述
Wrapper<T>queryWrapper實(shí)體包裝類 QueryWrapper
Serializableid主鍵 ID
Map<String, Object>columnMap表字段 map 對象
Collection<? extends Serializable>idList主鍵 ID 列表

1.4 Update

// 根據(jù) UpdateWrapper 條件,更新記錄 需要設(shè)置sqlset
boolean update(Wrapper<T> updateWrapper);
// 根據(jù) whereWrapper 條件,更新記錄
boolean update(T updateEntity, Wrapper<T> whereWrapper);
// 根據(jù) ID 選擇修改
boolean updateById(T entity);
// 根據(jù)ID 批量更新
boolean updateBatchById(Collection<T> entityList);
// 根據(jù)ID 批量更新
boolean updateBatchById(Collection<T> entityList, int batchSize);

參數(shù)說明

類型參數(shù)名描述
Wrapper<T>updateWrapper實(shí)體對象封裝操作類 UpdateWrapper
Tentity實(shí)體對象
Collection<T>entityList實(shí)體對象集合
intbatchSize更新批次數(shù)量

1.5 Get

// 根據(jù) ID 查詢
T getById(Serializable id);
// 根據(jù) Wrapper,查詢一條記錄。結(jié)果集,如果是多個(gè)會拋出異常,隨機(jī)取一條加上限制條件 wrapper.last("LIMIT 1")
T getOne(Wrapper<T> queryWrapper);
// 根據(jù) Wrapper,查詢一條記錄
T getOne(Wrapper<T> queryWrapper, boolean throwEx);
// 根據(jù) Wrapper,查詢一條記錄
Map<String, Object> getMap(Wrapper<T> queryWrapper);
// 根據(jù) Wrapper,查詢一條記錄
<V> V getObj(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

參數(shù)說明

類型參數(shù)名描述
Serializableid主鍵 ID
Wrapper<T>queryWrapper實(shí)體對象封裝操作類 QueryWrapper
booleanthrowEx有多個(gè) result 是否拋出異常
Tentity實(shí)體對象
Function<? super Object, V>mapper轉(zhuǎn)換函數(shù)

1.6 List

// 查詢所有
List<T> list();
// 查詢列表
List<T> list(Wrapper<T> queryWrapper);
// 查詢(根據(jù)ID 批量查詢)
Collection<T> listByIds(Collection<? extends Serializable> idList);
// 查詢(根據(jù) columnMap 條件)
Collection<T> listByMap(Map<String, Object> columnMap);
// 查詢所有列表
List<Map<String, Object>> listMaps();
// 查詢列表
List<Map<String, Object>> listMaps(Wrapper<T> queryWrapper);
// 查詢?nèi)坑涗?
List<Object> listObjs();
// 查詢?nèi)坑涗?
<V> List<V> listObjs(Function<? super Object, V> mapper);
// 根據(jù) Wrapper 條件,查詢?nèi)坑涗?
List<Object> listObjs(Wrapper<T> queryWrapper);
// 根據(jù) Wrapper 條件,查詢?nèi)坑涗?
<V> List<V> listObjs(Wrapper<T> queryWrapper, Function<? super Object, V> mapper);

參數(shù)說明

類型參數(shù)名描述
Wrapper<T>queryWrapper實(shí)體對象封裝操作類 QueryWrapper
Collection<? extends Serializable>idList主鍵 ID 列表
Map<String, Object>columnMap表字段 map 對象
Function<? super Object, V>mapper轉(zhuǎn)換函數(shù)

有一個(gè)Mapper CRUD接口沒有寫,其實(shí)大差不差用法都差不多。除了方法名不同以外,sevice接口有異常拋出和事務(wù)注解,一般都用service接口操作數(shù)據(jù)庫。

更多Service接口操作,請見官網(wǎng)。

綜合案例

package com.ycxw.mybatis_test;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.javafaker.Faker;
import com.ycxw.mybatis_test.entity.Book;
import com.ycxw.mybatis_test.mapper.BookMapper;
import com.ycxw.mybatis_test.service.IBookService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@Slf4j
@SpringBootTest
class MybatisTextApplicationTests {
    @Autowired
    private IBookService bookService;
    @Autowired
    private BookMapper bookMapper;

    @Test
    void contextLoads() {
    }

    /**
     * 保存單個(gè)
     */
    @Test
    public void test01() {
        /*創(chuàng)建faker實(shí)例
        參數(shù):指定使用語言和國家*/
        Faker faker = new Faker(new Locale("zh", "CN"));
        /*
          faker.number().randomDouble(x,x,x)
        * 生成一個(gè)介于 100 和 999 之間的隨機(jī)浮點(diǎn)數(shù),并且保留兩位小數(shù)。
        * */
        Book book = new Book()
                .setBookname(faker.book().title())
                .setPrice((float) faker.number().randomDouble(2, 100, 999));
        bookService.save(book);
    }

    /**
     * 保存多個(gè)
     */
    @Test
    public void test02() {
        /*
         * Stream.generate方法:創(chuàng)建一個(gè)無限流,其中每個(gè)元素都是使用提供的lambda表達(dá)式生成的。
         * 使用lambda表達(dá)式創(chuàng)建一個(gè)新的Book對象,并用Faker庫生成的隨機(jī)書名和價(jià)格對其進(jìn)行初始化。
         * limit方法:將流限制為只包含前1000個(gè)元素。
         * collect方法:將流收集到一個(gè)列表中。
         * */
        Faker faker = new Faker(new Locale("zh", "CN"));
        List<Book> list = Stream.generate(
                () -> new Book()
                        .setBookname(faker.book().title())
                        .setPrice((float) faker.number().randomDouble(2, 100, 999))
        ).limit(10).collect(Collectors.toList());
        bookService.saveBatch(list);
    }

    @Test
    public void test03() {
        Faker faker = new Faker(Locale.CHINA);
        List<Book> list = Stream.generate(
                () -> new Book()
                        .setBookname(faker.book().title())
                        .setPrice((float) faker.number().randomDouble(2, 100, 999))
        ).limit(1000).collect(Collectors.toList());
        bookService.saveBatch(list, 500);
    }

    @Test
    public void test04() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        /*條件刪除
         * lt小于
         * */
        wrapper.lt("price", 500);
//        wrapper.like("name", "你");
        bookService.remove(wrapper);
    }

    @Test
    public void test05() {
        Map<String, Object> ms = new HashMap<>();
        ms.put("price", 100);
//        ms.put("name", "你");
        bookService.removeByMap(ms);
    }

    @Test
    public void test06() {
        List<Long> ids = bookService
                .list()
                .stream()
                .limit(5)
                .map(Book::getId)
                .collect(Collectors.toList());
        bookService.removeBatchByIds(ids);
    }

    @Test
    public void test07() {
        UpdateWrapper<Book> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", 493587255361727L);
        wrapper.set("name", "jack");
        wrapper.setSql("price=price+1");
        bookService.update(wrapper);
    }

    @Test
    public void test08() {
        Faker faker = new Faker(Locale.CHINA);
        Book Book = new Book()
                .setBookname(faker.book().title())
                .setPrice((float) faker.number().randomDouble(2, 100, 999));
        UpdateWrapper<Book> wrapper = new UpdateWrapper<>();
        wrapper.eq("id", 493587255361723L);
        bookService.update(Book, wrapper);
    }

    @Test
    public void test09() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.like("name", "呂");
        wrapper.gt("price", 200);
        bookService.getOne(wrapper);
    }

    @Test
    public void test10() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        /*sql條件加拼接*/
        wrapper.gt("price", 200);
        /*拼接sql到最后*/
        wrapper.last("limit 1");
        bookService.getOne(wrapper);
    }

    @Test
    public void test11() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.gt("price", 200);
        bookService.getOne(wrapper, false);
    }

    @Test
    public void test12() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.gt("price", 200);
        wrapper.last("limit 1");
        bookService.getMap(wrapper).forEach((k, v) -> {
            log.warn("{},{}", k, v);
        });
    }

    @Test
    public void test13() {
        QueryWrapper<Book> wrapper = new QueryWrapper<>();
        wrapper.gt("price", 200);
        wrapper.last("limit 1");
        bookService.getObj(wrapper, e -> {
            log.warn("{}", e);
            return new Object();
        });
    }

}

到此這篇關(guān)于MyBatis-Plus內(nèi)置接口方法的具體使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus內(nèi)置接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Spring實(shí)現(xiàn)Logback日志模板設(shè)置動(dòng)態(tài)參數(shù)功能

    Spring實(shí)現(xiàn)Logback日志模板設(shè)置動(dòng)態(tài)參數(shù)功能

    本文介紹如何在Spring應(yīng)用中實(shí)現(xiàn)Logback日志模板的動(dòng)態(tài)參數(shù)設(shè)置,通過設(shè)計(jì)traceId鏈路標(biāo)識,將其動(dòng)態(tài)添加到日志輸出中,從而實(shí)現(xiàn)簡易的鏈路追蹤功能,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 詳解Java從工廠方法模式到 IOC/DI思想

    詳解Java從工廠方法模式到 IOC/DI思想

    工廠方法(Factory Method)模式的意義是定義一個(gè)創(chuàng)建產(chǎn)品對象的工廠接口,將實(shí)際創(chuàng)建工作推遲到子類當(dāng)中。核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個(gè)抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實(shí)現(xiàn)的接口。本文將詳細(xì)介紹Java從工廠方法模式到 IOC/DI思想。
    2021-06-06
  • java中orElse和orElseGet方法區(qū)別小結(jié)

    java中orElse和orElseGet方法區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于java中orElse和orElseGet方法區(qū)別的相關(guān)資料,兩者之間的區(qū)別細(xì)微,但是卻在某些場景下顯的很重要,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • springboot整合webservice使用簡單案例總結(jié)

    springboot整合webservice使用簡單案例總結(jié)

    WebService是一個(gè)SOA(面向服務(wù)的編程)的架構(gòu),它是不依賴于語言,平臺等,可以實(shí)現(xiàn)不同的語言間的相互調(diào)用,下面這篇文章主要給大家介紹了關(guān)于springboot整合webservice使用的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • @Transactional注解不起作用的原因分析及解決

    @Transactional注解不起作用的原因分析及解決

    這篇文章主要介紹了@Transactional注解不起作用的原因分析及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解析Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed

    解析Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed

    本篇文章是對Neatbeans(常見錯(cuò)誤) build-impl.xml:305: Compile failed的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • java實(shí)現(xiàn)數(shù)字轉(zhuǎn)換人民幣中文大寫工具

    java實(shí)現(xiàn)數(shù)字轉(zhuǎn)換人民幣中文大寫工具

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)數(shù)字轉(zhuǎn)換人民幣中文大寫工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Struts2學(xué)習(xí)筆記(3)-DMI動(dòng)態(tài)調(diào)用方式

    Struts2學(xué)習(xí)筆記(3)-DMI動(dòng)態(tài)調(diào)用方式

    本文主要介紹Struts2的DMI動(dòng)態(tài)調(diào)用的兩種方式,簡單實(shí)用,希望能給大家做一個(gè)參考。
    2016-06-06
  • 如何在Spring Boot中使用MQTT

    如何在Spring Boot中使用MQTT

    這篇文章主要介紹了如何在Spring Boot中使用MQTT,幫助大家更好的理解和學(xué)習(xí)使用Spring Boot,感興趣的朋友可以了解下
    2021-04-04
  • springboot從application.properties中注入list,?map方式

    springboot從application.properties中注入list,?map方式

    這篇文章主要介紹了springboot從application.properties中注入list,map方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論