Springboot整合Mapper和PageHelper

整合Mybatis使用Mapper和PageHelper

1、添加新的依赖
<!-- 通用Mapper插件文档地址:https://gitee.com/free/Mapper/wikis/Home -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>
<!-- 分页插件
 文档地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.10</version>
</dependency>
2、添加新的配置属性
# Mapper相关配置
mapper:
  enum-as-simple-type: true # 简单按照枚举类型处理
  identity: MYSQL
  mappers: tk.mybatis.mapper.common.Mapper
  not-empty: true # 自动判断Insert和Update中字符串类型!=null
  
# pageHelper相关配置
pagehelper:
  helper-dialect: mysql
  params: count=countSql
  reasonable: false # 分页合理化参数
  support-methods-arguments: true # 支持Mapper接口参数传递分页参数
  
# mybatis新加配置
mybatis:
  configuration:
    map-underscore-to-camel-case: true # 配置驼峰命名
  mapper-locations: classpath:com/carry/mapper/*Mapper.xml
  type-aliases-package: com.carry.entity  # 配置实体类对应的包
3、构建实体类
@Data
@NoArgsConstructor
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = -8057591359892731452L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;
    private String password;

}
4、创建Mapper
  • 继承Mapper
public interface UserMapper extends Mapper<User> { 
	public Page<Category> getCategoryByPage(); 
}
5、创建映射配置xml
<select id="countByUsername" resultType="java.lang.Integer">
    SELECT count(1) FROM user WHERE username = #{username}
</select>
6、创建Service类
//方式一
public QueryResult<Category> getCategoryByPage(int page, int size) {
    PageHelper.startPage(page, size);  
    // 调用dao,返回类型是 Page<>
    Page<Category> categoryPage = categoryMapper.getCategoryByPage(); 
    List<Category> result = categoryPage.getResult();  // 得到result,返回类型是 List<>
    // 返回类型封装
    QueryResult<Category> queryResult = new QueryResult<>(); 
    queryResult.setList(result);
    queryResult.setTotal(result.size());
    return queryResult;
}
//方式二
public PageInfo<ResponseEntityDto> page(RequestParamDto param) {
    PageHelper.startPage(param.getPageNum(), param.getPageSize());
    List<ResoinseEntityDto> list = mapper.selectManySelective(param);
    PageInfo<ResponseEntityDto> pageInfo = (PageInfo<ResponseEntityDto>)list;
    return pageInfo;
} 
//方式三,采用lambda方式,更加简洁,但是PageInfo可能不适合业务,可以采用转化的方式
public PageInfo<ResponseEntityDto> page(RequestParamDto param) {
    return PageHelper.startPage(param.getPageNum(), param.getPageSize())
        .doSelectPageInfo(() -> list(param))
} 
public List<ResponseEntityDto> list(RequestParamDto param) {
    return mapper.selectManySelective(param);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值