提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
基本用法
以下是一些常见的MyBatis-Plus的Mapper方法:
通用查询方法:
selectById: 根据ID查询记录
selectBatchIds: 根据ID集合批量查询记录
selectByMap: 根据条件查询一条记录
selectOne: 根据条件查询一条记录,如果结果集多于一条,抛出异常
selectCount: 根据条件查询记录总数
selectList: 根据条件查询记录列表
通用插入方法:
insert: 插入一条记录
insertBatchSomeColumn: 插入批量记录,对null值的字段不做处理
insertBatch: 插入批量记录
insertOrUpdate: 插入或更新记录
insertOrUpdateBatch: 插入或更新批量记录
通用更新方法:
updateById: 根据ID更新记录
update: 根据条件更新记录
通用删除方法:
deleteById: 根据ID删除记录
deleteBatchIds: 根据ID集合批量删除记录
deleteByMap: 根据条件删除记录
delete: 根据条件删除记录
其他方法:
selectMaps: 查询结果转换为Map
selectPage: 分页查询
selectMapsPage: 分页查询,结果转换为Map
这些方法提供了通用的数据库操作,可以方便地进行增、删、改、查等操作。在具体使用时,可以根据业务需求选择合适的方法。同时,MyBatis-Plus还支持自定义SQL和条件构造器等高级功能,使得开发更加灵活和高效。
QueryWrapper
基本用法
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("column_name", value); // 等于
queryWrapper.ne("column_name", value); // 不等于
queryWrapper.gt("column_name", value); // 大于
queryWrapper.ge("column_name", value); // 大于等于
queryWrapper.lt("column_name", value); // 小于
queryWrapper.le("column_name", value); // 小于等于
queryWrapper.like("column_name", "value"); // 模糊查询
queryWrapper.likeLeft("column_name", "value"); // 左模糊查询
queryWrapper.likeRight("column_name", "value"); // 右模糊查询
queryWrapper.in("column_name", values); // IN条件
queryWrapper.isNull("column_name"); // IS NULL条件
queryWrapper.isNotNull("column_name"); // IS NOT NULL条件
queryWrapper.orderByAsc("column1", "column2"); // 升序排序
queryWrapper.orderByDesc("column1", "column2"); // 降序排序
// 嵌套条件
queryWrapper.nested(i -> i.eq("column1", value).or().eq("column2", value));
//自定义SQL片段
queryWrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2021-01-01");
//分组
queryWrapper.groupBy("column1", "column2");
使用LambdaQueryWrapper
@Override
public PayInfoRespDTO getPayInfoByPaySn(String paySn) {
LambdaQueryWrapper<PayDO> queryWrapper = Wrappers.lambdaQuery(PayDO.class)
.eq(PayDO::getPaySn, paySn);
PayDO payDO = payMapper.selectOne(queryWrapper);
return BeanUtil.convert(payDO, PayInfoRespDTO.class);
}
多表查询
userQueryWrapper.join("order", "user.id = order.user_id")
.select("user.id", "user.username", "order.order_no")
.eq("user.age", 25)
.like("order.order_no", "2023");