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