您当前的位置: 首页 >  mybatis

梁云亮

暂无认证

  • 0浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SpringBoot中 MyBatis 和 MyBatisPlus 分页

梁云亮 发布时间:2019-11-03 12:13:19 ,浏览量:0

有关MyBatis 和 MyBatisPlus 分页分为以下两个博客讲解: 博客一 博客二

基础代码
  • 实体类User
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
    /**
     * 编号
     */
    private Integer id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 昵称
     */
    private String nickname;
}
  • 查询类UserQuery
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserQuery {
    /**
     * 编号
     */
    private Integer id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 所有查询的字段
     */
    private String columns;
    /**
     * 当前显示的页码
     */
    private Integer pageNum =1;
    /**
     * 每页的大小
     */
    private Integer pageSize = 10;
}
MyBatis分页
  • Maven依赖

    com.github.pagehelper
    pagehelper-spring-boot-starter
    1.3.1

  • 分页接口
@Mapper
public interface UserMapper{
    /**
     * 根据条件分页查询用户
     * @param userQuery
     * @return
     */
    List selectUserByPageWithCondition(UserQuery userQuery);
}
  • 分页Mapper

DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    
        
        
        
    
    
        select
        
            *
        
        
            ${columns}
        
        from tb_user
        
            
                and id = #{id}
            
            
                and name like #{name}
            
            
                and nickname like #{nickname}
            
        
    

  • 测试代码
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.resume.domain.User;
import com.resume.domain.UserQuery;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;

@SpringBootTest
class UserMapperTest {
    @Resource
    private UserMapper userMapper;
    @Test
    void selectUserByPageWithCondition() {
        //使用MyBatis的分页插件PageHelper
        Page page = PageHelper.startPage(2, 10);
        UserQuery userQuery = UserQuery.builder()
                .columns("id,name")
                .build();
        List users = userMapper.selectUserByPageWithCondition(userQuery);
        users.forEach(System.out::println);
        System.out.println(page);
        page.getResult().forEach(System.out::println);
    }
}

注意:引入的Page所属于的包为com.github.pagehelper.Page

MyBatisPlus分页
  • 除了MyBatisPlus的依赖外,不需要再额外导入分页插件
  • Servlet层代码
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.resume.bean.PageBean;
import com.resume.domain.User;
import com.resume.domain.UserQuery;
import com.resume.mapper.UserMapper;
import com.resume.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl implements UserService {

    @Override
    public PageBean pageUser(UserQuery userQuery) {
        IPage page = new Page(userQuery.getPageNum(),userQuery.getPageSize());

        QueryWrapper queryWrapper = new QueryWrapper();

        if (userQuery.getId() != null) {
            queryWrapper.eq("id", userQuery.getId());
        }
        if (userQuery.getName() != null) {
            queryWrapper.like("name", userQuery.getName());
        }
        if (userQuery.getNickname() != null) {
            queryWrapper.like("nickname", userQuery.getNickname());
        }
       
        baseMapper.selectPage(page, queryWrapper);
        PageBean pageBean = PageBean.init(page);

        return pageBean;
    }
}

注意:引入的Page所属于的包为com.baomidou.mybatisplus.extension.plugins.pagination.Page

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0459s