Mybatis-Plus: Mapper層的創建


  Mapper層的創建

  如果想使用Mybatis-Plus的CRUD接口,我們必須要創建Mapper層,原理如下圖所示:

  我們繼承 BaseMapper后,就可以使用MP為我們提供的各種 CRUD方法。具體如何調用可以直接參考官方網站給出的示例,下面展示UsersMapper接口,這個接口用於人員管理的各種CRUD。

@Mapper
public interface UsersMapper extends BaseMapper<Users> {

}

  可以看到,我們並沒有實現BaseMapper中的任何方法,這是因為BaseMapper里的方法都是已經實現好的,只要添加泛型就可以對某個Entity進行操作。@Mapper注解表明這是一個Mapper接口,可以讓主程序進行MapperScan的時候,把該接口視為一個Mapper攔截下來。

  當然我們也可以不繼承BaseMapper,自己寫SQL語句,比如下面這個例子:

@Mapper
public interface Inter {
    @select("select * from sysuser where userid=#{id} and uanme=#{userName}")
    int queryUserByid(@param("id") int id,@param("userName") String uname);  
      //param注解里寫上sql語句中的占位符,表面把對應參數傳給sql語句中

  @Select("select * from sysuser where userid=#{userid} or username=#{username}")
  List<Sysuser> selectUser(Sysuser u);
      //通過實體類里的屬性,注入到sql語句中的 userid 和 username
}

寫一下 Mapper 常用的方法:

1. insert 插入方法

        int affectRows = trainMapper.insert(train);

 

  向數據庫中插入一個對象,返回值是影響的行數(也就是1)

2. updateById方法

        int affectRows = trainMapper.updateById(train);

 

  這個方法可以根據傳入對象的id,來找到數據庫中對應的行,然后把傳入的信息覆蓋到原先的信息上。好處就是能根據id自動尋找到對應的行,返回值是影響的行數。

3. selectOne方法

            companyQueryWrapper.eq("id", train.getCompanyId())
                    .eq("status", CompanyResult.STATUS_EXIST);
            Company company = companyMapper.selectOne(companyQueryWrapper);

 

  根據傳入的QueryWrapper,在數據庫中找出一個符合的對象並返回,如果沒有則返回null。

4. selectList方法

        QueryWrapper<Train> trainQueryWrapper = new QueryWrapper<>();
        trainQueryWrapper.eq("company_id", users.getCompanyId())
                .eq("status", TrainResult.STATUS_EXIST)
                .ge("end_time", System.currentTimeMillis());
        //trainList為空不報錯
        List<Train> trainList = trainMapper.selectList(trainQueryWrapper);

  根據傳入的QueryWrapper,在數據庫中找出多個符合的對象,並返回一個List,如果沒有則返回一個空的List ( [] ),而不是null

5. selectCount方法

            trainRecordsQueryWrapper.eq("train_id", train.getId())
                    .eq("status", TrainRecordsResult.SIGN_UP);
            Long signUpNums = trainRecordsMapper.selectCount(trainRecordsQueryWrapper);
            trainDto.setSignUpNums(signUpNums);

 

  根據傳入的QueryWrapper,統計數據庫中有多少條數據符合,返回這些數據的數量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM