栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于SpringBoot框架整合mybatis plus的一些小问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于SpringBoot框架整合mybatis plus的一些小问题

1.mybatis plus 插入数据库生成的id很大如何解决?

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开始。

2.基于mybatis plus 实现自定义分页

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;

表示非单表字段

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318594.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号