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,统计数据库中有多少条数据符合,返回这些数据的数量。

 

posted @   Acc22222222  阅读(1410)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示