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

BaseMapper接口的使用方法

 更新時(shí)間:2023年12月13日 15:29:43   作者:辰 羽  
這篇文章主要介紹了BaseMapper接口的使用方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

3、相關(guān)方法

3.1、BaseMapper接口

MyBatis-Plus中的基本CRUD在內(nèi)置的 BaseMapper 中都已得到了實(shí)現(xiàn),我們可以直接使用,這樣大大的簡(jiǎn)化了開(kāi)發(fā)效率。

/**
 * Mapper 繼承該接口后,無(wú)需編寫(xiě) mapper.xml 文件,即可獲得CRUD功能
 */
public interface BaseMapper<T> extends Mapper<T> {
    //插入一條記錄
    int insert(T entity);
    //根據(jù) ID 刪除
    int deleteById(Serializable id);
    //根據(jù)實(shí)體(ID)刪除
    int deleteById(T entity);
    //根據(jù) columnMap 條件,刪除記錄
    int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
    // 刪除記錄,條件生成器根據(jù)entity生成where后的條件
    int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //刪除(根據(jù)ID或?qū)嶓w 批量刪除)
    int deleteBatchIds(@Param(Constants.COLL) Collection<?> idList);
    // 根據(jù) ID 修改
    int updateById(@Param(Constants.ENTITY) T entity);
    // 根據(jù) whereEntity 條件,更新記錄
    int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
    //根據(jù) ID 查詢(xún)
    T selectById(Serializable id);
    //查詢(xún)(根據(jù)ID 批量查詢(xún))
    List<T> selectBatchIds(@Param(Constants.COLL) Collection<? extends Serializable> idList);
    // 查詢(xún)(根據(jù) columnMap 條件)
    List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
    //查詢(xún)一條記錄
    default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {
       .......
    }
    //根據(jù) Wrapper 條件,判斷是否存在記錄
    default boolean exists(Wrapper<T> queryWrapper) {
 			.....
    }
    // 根據(jù) Wrapper 條件,查詢(xún)總記錄數(shù)
    Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //根據(jù) entity 條件,查詢(xún)?nèi)坑涗?
    List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //根據(jù) Wrapper 條件,查詢(xún)?nèi)坑涗?
    List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //根據(jù) Wrapper 條件,查詢(xún)?nèi)坑涗?
    List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    // 根據(jù) entity 條件,查詢(xún)?nèi)坑涗洠ú⒎?yè))
    <P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
    //根據(jù) Wrapper 條件,查詢(xún)?nèi)坑涗洠ú⒎?yè))
    <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
}

3.1.1、新增

在封裝的 BaseMapper 中只有一個(gè)插入語(yǔ)句,因?yàn)楹A繑?shù)據(jù)插入單條SQL無(wú)法實(shí)行,所以mybatis-plus 把批量插入放在了Service 層對(duì)應(yīng)的封裝接口里了。

@Resource
private UserMapper userMapper;
@Test
public void test2(){
	//新增數(shù)據(jù)
    User user1 = new User();
    user1.setUsername("mybatisplus測(cè)試");
    user1.setPassword("12312312");
    int insert = userMapper.insert(user1);
    System.out.println("受影響行數(shù):"+insert);
    //自動(dòng)獲取id(默認(rèn)使用雪花算法生成的id)
    Integer id = user1.getUserId();
    //獲取數(shù)據(jù)
    User user = userMapper.selectById(id);
    System.out.println(user);
}

這個(gè)ID是MyBatis-Plus基于雪花算法生成的一個(gè)ID。之所以會(huì)為負(fù)數(shù),是因?yàn)閿?shù)據(jù)庫(kù)設(shè)置的是自增,而在User實(shí)體類(lèi)中沒(méi)有進(jìn)行設(shè)置

//IdType.ID_WORKER_STR 默認(rèn)的;底層使用了雪花算法;類(lèi)型為Integer
//IdType.AUTO 數(shù)據(jù)庫(kù)自增;數(shù)據(jù)庫(kù)上必須設(shè)置為自增
//IdType.NONE 沒(méi)有設(shè)置主鍵類(lèi)型;跟隨全局;全局的主鍵策略如果沒(méi)有設(shè)置,默認(rèn)是雪花算法
//IdType.INPUT 手動(dòng)輸入;必須手動(dòng)輸入,數(shù)據(jù)庫(kù)自增也沒(méi)用;
//IdType.UUID 全局唯一id;無(wú)序;字符串;
//ID_WORKER_STR 全局唯一(idWorker的字符串表示);
@TableId(value = "user_id",type = IdType.AUTO)
private Integer userId;

設(shè)置完成后,將數(shù)據(jù)庫(kù)之前測(cè)試的數(shù)據(jù)刪除,重新運(yùn)行一下

3.1.2、刪除

數(shù)據(jù)

刪除一行數(shù)據(jù)

//通過(guò)id刪除一行數(shù)據(jù)
int i = userMapper.deleteById(15);
System.out.println("受影響行數(shù):"+i);

批量刪除

//批量刪除
List<Integer> idList = Arrays.asList(16,17, 18);
int i1 = userMapper.deleteBatchIds(idList);
System.out.println("受影響行數(shù):"+i1 );

通過(guò)Map設(shè)置條件

//根據(jù)條件刪除
Map<String, Object> map = new HashMap<>();
map.put("username","新增");
map.put("password","456454");
//刪除username為新增,且password為456454的數(shù)據(jù)
int i = userMapper.deleteByMap(map);
System.out.println("受影響行數(shù):"+ i );

3.1.3、修改

image-20230305165531886

User user = userMapper.selectById(11);
System.out.println(user);
//對(duì)user進(jìn)行修改
user.setUsername("修改");
user.setPassword("2131278");
int i = userMapper.updateById(user);
System.out.println("受影響行數(shù):"+ i );
//修改后的User
User user1 = userMapper.selectById(11);
System.out.println(user1);

3.1.4、查詢(xún)

查詢(xún)一條數(shù)據(jù)

//根據(jù)ID查詢(xún)
User user = userMapper.selectById(1);
System.out.println(user);
//根據(jù) LambdaQueryWrapper 的條件查詢(xún)
User user1 = userMapper.selectOne(new LambdaQueryWrapper<User>().like(User::getUsername,"root"));
System.out.println(user1);

根據(jù)ID批量查詢(xún)

//根據(jù)ID批量查詢(xún)
List<Integer> list = Arrays.asList(1, 2, 3);
List<User> users = userMapper.selectBatchIds(list);
users.forEach(System.out::println);

通過(guò)map條件查詢(xún),鍵值對(duì)應(yīng)數(shù)據(jù)的字段和值。

//通過(guò)map條件查詢(xún)
Map<String , Object> map = new HashMap<>();
map.put("username","root");
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::println);

查詢(xún)所有數(shù)據(jù)

//查詢(xún)所有數(shù)據(jù),參數(shù)為null
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);

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

相關(guān)文章

  • Java中數(shù)學(xué)相關(guān)類(lèi)的使用教程

    Java中數(shù)學(xué)相關(guān)類(lèi)的使用教程

    Java是一種廣泛使用的編程語(yǔ)言,它提供了許多數(shù)學(xué)運(yùn)算的函數(shù)和方法,使得開(kāi)發(fā)者可以輕松地進(jìn)行各種數(shù)學(xué)計(jì)算,下面這篇文章主要給大家介紹了關(guān)于Java中數(shù)學(xué)相關(guān)類(lèi)使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 關(guān)于spring中事務(wù)的傳播機(jī)制

    關(guān)于spring中事務(wù)的傳播機(jī)制

    這篇文章主要介紹了關(guān)于spring中事務(wù)的傳播機(jī)制,所謂事務(wù)傳播機(jī)制,也就是在事務(wù)在多個(gè)方法的調(diào)用中是如何傳遞的,是重新創(chuàng)建事務(wù)還是使用父方法的事務(wù),需要的朋友可以參考下
    2023-05-05
  • java 取出文本文件中空行的實(shí)例代碼

    java 取出文本文件中空行的實(shí)例代碼

    這篇文章介紹了java 取出文本文件中空行的實(shí)例代碼,有需要的朋友可以參考一下
    2013-09-09
  • SpringBoot集成Tomcat服務(wù)架構(gòu)配置

    SpringBoot集成Tomcat服務(wù)架構(gòu)配置

    這篇文章主要為大家介紹了SpringBoot集成Tomcat服務(wù)架構(gòu)配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 淺談java中Math.random()與java.util.random()的區(qū)別

    淺談java中Math.random()與java.util.random()的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談java中Math.random()與java.util.random()的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • 詳解Java利用深度優(yōu)先遍歷解決迷宮問(wèn)題

    詳解Java利用深度優(yōu)先遍歷解決迷宮問(wèn)題

    深度優(yōu)先遍歷:深度優(yōu)先遍歷是圖論中的經(jīng)典算法。其利用了深度優(yōu)先搜索算法可以產(chǎn)生目標(biāo)圖的相應(yīng)拓?fù)渑判虮?,采用拓?fù)渑判虮砜梢越鉀Q很多相關(guān)的圖論問(wèn)題,如最大路徑問(wèn)題等等。本文將利用深度優(yōu)先遍歷解決迷宮問(wèn)題,感興趣的可以了解一下
    2022-02-02
  • 詳解Maven打包和運(yùn)行

    詳解Maven打包和運(yùn)行

    這篇文章主要介紹了Maven打包和運(yùn)行的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Elasticsearch配置文件選項(xiàng)作用詳解(es7)

    Elasticsearch配置文件選項(xiàng)作用詳解(es7)

    這篇文章主要為大家介紹了Elasticsearch配置文件選項(xiàng)作用詳解(es7),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java實(shí)現(xiàn)數(shù)據(jù)更新和事件通知的觀察者模式

    Java觀察者模式是一種行為型設(shè)計(jì)模式,用于實(shí)現(xiàn)對(duì)象間的一對(duì)多依賴(lài)關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),它的所有依賴(lài)對(duì)象都會(huì)收到通知并自動(dòng)更新。觀察者模式可以實(shí)現(xiàn)松耦合,增強(qiáng)了系統(tǒng)的可維護(hù)性和可拓展性
    2023-04-04
  • 深入理解SpringMVC中央調(diào)度器DispatcherServlet

    深入理解SpringMVC中央調(diào)度器DispatcherServlet

    這篇文章主要介紹了SpringMVC核心之中央調(diào)度器DispatcherServlet的相關(guān)知識(shí),包括SpringMVC請(qǐng)求處理過(guò)程及SrpingMVC容器和spring?IOC容器關(guān)系,需要的朋友可以參考下
    2022-05-05

最新評(píng)論