mybatis plus自3.3.0开始,默认使用雪花算法+UUID(不含中划线)产生id,因此我们会看到使用mybatis plus插入一条数据的时候,自动生成的id是这个样子的:1447571384928514049,
而我们一般的id都是从1开始的,1447571384928514049导致后面自增的id也变成了一长串数字,不利于维护。
因此一个注解需要加在实体类的id属性上:
@TableId(type = IdType.AUTO)
private Long id;
开发者无需赋值,自己根据当前表中id最大值自增+1,然而一旦mybatis plus在未加@TableId时已经对表进行了插入操作,此时的当前表中id最大值发生变化,成为一长串。
可以在清空表中数据后,修改自增开始的id
ALTER TABLE user_blog AUTO_INCREMENT = 1
这样再插入数据就会从1开始。
controller
@GetMapping("listPage")
public ResultData listPage(int pageNo,int pageSize,UserBlog userBlog){
// 查询 - 条件构造器
QueryWrapper queryWrapper = new QueryWrapper<>();
if(!StringUtils.isEmpty(userBlog.getTitle())){
// 给where 语句后追加: title模糊查询
// 第一个参数是数据库列名 ; 第二个参数是传入的值
queryWrapper.like("title",userBlog.getTitle());
}
if(userBlog.getStatus() != null){
// 给where 语句后追加: status =
queryWrapper.eq("status",userBlog.getStatus());
}
Page page = new Page<>(pageNo, pageSize);
IPage pageInfo = userBlogService.pageAll(page, queryWrapper);
return ResultData.ok(pageInfo);
}
service
public interface UserBlogService extends IService{ public IPage pageAll(Page page, QueryWrapper queryWrapper); }
ServiceImpl
@Transactional @Service //, T> public class UserBlogServiceImpl extends ServiceImpl implements UserBlogService { @Autowired private UserBlogMapper userBlogMapper; @Override public IPage pageAll(Page page, QueryWrapper queryWrapper) { return userBlogMapper.findByPage(page,queryWrapper); } }
mapper
@Repository public interface UserBlogMapper extends baseMapper{ IPage findByPage(IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); }
注意要在参数Wrapper wrapper前面加上这个注解@Param(Constants.WRAPPER),识别QueryWrapper
mapper.xml
select b.id,b.title,b.content,b.reaseon,b.status,u.username from user_blog b inner join user u on b.userid=u.id ${ew.customSqlSegment}
需要在sql语句后面加上${ew.customSqlSegment},这样会自动的在后面追加wrapper里面设置的条件。
这里用到了多表联查,为了防止mybatis plus将username识别为单表的字段,在userblog实体类的username属性上加一个标签
@TableField(exist = false)
private String username;
表示非单表字段



