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,统计数据库中有多少条数据符合,返回这些数据的数量。
分类:
森思Sunflower项目笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现