国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mybatis-plus 的一種很別扭的用法

Rocko / 3659人閱讀

摘要:熟悉的人都知道,提供兩種包含預定義增刪改查操作的接口對比這兩個接口,操作都差不多,名字有一點點改變,比如里面叫的方法,在里面叫。另外還有一種方式就是通過把暴露出來這個也是的實例。這樣的話,使用的時候就只需要引用一個對象了

熟悉 mybatis-plus 的人都知道,mybatis-plus 提供兩種包含預定義增刪改查操作的接口:

com.baomidou.mybatisplus.core.mapper.BaseMapper

com.baomidou.mybatisplus.extension.service.IService

對比這兩個接口,操作都差不多,名字有一點點改變,比如 BaseMapper 里面叫 insert() 的方法,在 IService 里面叫 save()。

其實我也不是很清楚為什么要多帶帶設計 IService 接口,但是兩者確實有區別,就是 IService 提供批處理操作,BaseMapper 沒有。

另外,IService 的默認實現 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl 就是調用 BaseMapper 來操作數據庫,所以我猜 IService 是 Java 8 之前對 BaseMapper 所做的擴展,而 Java 8 之后,因為有了 default 方法,ServiceImpl 里面的東西其實都可以移到 BaseMapper 里面了。

除此之外還有就是 IService 依賴于 Spring 容器,而 BaseMapper 不依賴;BaseMapper 可以繼承并添加新的數據庫操作,IService 要擴展的話還是得調用 Mapper,顯得有些多此一舉。

所以,如果你既要使用批處理操作,又要添加自己的數據庫操作,那就必須兩個接口一起用。

比如在下面一個示例項目中,就同時存在兩者:

// StudentService.java
@Service
public class StudentService extends ServiceImpl {
}

// StudentMapper.java
@Component
public interface StudentMapper extends BaseMapper {

    @Select("select * from STUDENT where FIRST_NAME=#{firstName}")
    List selectByFirstName(@Param("firstName") String firstName);
}

這樣每個實體都要創建兩個文件,很麻煩。可不可以簡化呢?可以,就像下面這樣:

// StudentService.java
@Service
public class StudentService extends ServiceImpl {

    public interface StudentMapper extends BaseMapper {

        @Select("select * from STUDENT where FIRST_NAME=#{firstName}")
        List selectByFirstName(@Param("firstName") String firstName);
    }
}

對,你沒看錯,就把 Mapper 直接寫在 Service 里面就好。有人就會問了,這個 Mapper 能用嗎?告訴你,能:

@Autowired
StudentService.StudentMapper studentMapper;

像上面這樣引用過來,照常使用即可。

另外還有一種方式就是通過 Service 把 Mapper 暴露出來:

public class StudentService extends ServiceImpl {
    
    public StudentMapper getMapper() {
        return this.baseMapper;
    }
    
    ...

這個 baseMapper 也是 StudentMapper 的實例。這樣的話,使用的時候就只需要引用 StudentService 一個對象了:

List list = studentService.getMapper().selectByFirstName("First");

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73689.html

相關文章

  • Spring Boot 2.x(五):整合Mybatis-Plus

    摘要:的作用可以看到,它給我們提供了一些核心的功能代碼生成器和現成的接口以及可以結合的條件構造器使我們的代碼變得足夠優雅,分頁的使用也是相當的方便,以及提供了不同的主鍵生成策略。 簡介 Mybatis-Plus是在Mybatis的基礎上,國人開發的一款持久層框架。 showImg(https://segmentfault.com/img/bVbvFk4?w=2022&h=862); 并且榮獲...

    AaronYuan 評論0 收藏0
  • MyBatis-Plus初步

    摘要:是最流行的關系型數據庫管理系統之一,在應用方面,是最好的,關系數據庫管理系統應用軟件。是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。 本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環境搭建、初步使用等知識和例子。對于背景知識,主要包含對MyBatis-Plus的特性介紹、為什么使用MyB...

    娣辯孩 評論0 收藏0
  • Django ORM層日志兩種實現方式

    摘要:最近開發一個內部的記錄系統其中有一個需求要求將所有數據庫操作記錄下來為此想了一些方案記錄一下思路演化這個需求出來的一瞬間我就否定了在業務邏輯層保存操作記錄的方案我認為這樣耦合度比較高成本也太高代碼也會大量重復的操作中刪除操作會調用的方法增改 最近開發一個內部的記錄系統,其中有一個需求要求將所有數據庫操作記錄下來,為此想了一些方案.記錄一下. 思路演化 這個需求出來的一瞬間我就否定了在業...

    CKJOKER 評論0 收藏0

發表評論

0條評論

Rocko

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<