通用Mapper和PageHelper入门
程序员文章站
2022-07-16 16:18:36
...
两个项目的共同点都是mybatis的插件,并且出自同一作者之手
通用Mapper介绍:
- 可以方便完成单表的增删改查,暂不支持多表的查询
- 抛弃mapper.xml的编写, 对于频繁修改数据库的情况,只需修改 model中的字段即可
- 当不同数据库进行切换的时候,无需修改代码
- 应用的缓存机制,并不是每次都是动态生成sql语句
pageHelpr介绍
无感知完成分页过程,利用Threadlocal完成完成Page对象在线程间的传输.
-
springboot 集成
pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--通用mapper中已经添加了mybatis的启动器的依赖因此可以省略-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
application.yaml配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.2.156:3306/heima
username: root
password: 123456
mybatis:
type-aliases-package: com.leyou.item.pojo
springboot启动类
import tk.mybatis.spring.annotation.MapperScan;
@EnableDiscoveryClient
@SpringBootApplication
//此处一定要引用通用mapper的依赖
@MapperScan("com.leyou.mapper")
public class LeyouItemServiceApp {
public static void main(String[] args) {
SpringApplication.run(LeyouItemServiceApp.class,args);
}
}
mapper.java文件和javabean
package com.leyou.mapper;
import com.leyou.item.pojo.Brand;
import tk.mybatis.mapper.common.Mapper;
public interface BrandMapper extends Mapper<Brand> {
}
//javabean
@Table(name = "tb_brand")
@Data
public class Brand {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
private String image;
private Character letter;
}
代码中的应用
public List<Category> queryCategoryByPid(Long pid) {
Category category = new Category();
//通过对象中的属性查询列表数据
category.setParentId(pid);
return categoryMapper.select(category);
}
public PageResult<Brand> queryBrandsByPage(String key, Integer page, Integer rows, String sortBy, Boolean desc) {
//建立查询的example对象
Example example = new Example(Brand.class);
//获取查询条件
Example.Criteria criteria = example.createCriteria();
//根据属性信息确定查询条件
if(StringUtils.isNotBlank(key)){
//模糊查询的确定方式
criteria.andLike("name","%"+key+"%").orEqualTo("letter",key);
}
if(StringUtils.isNotBlank(sortBy)){
//排序操作
example.setOrderByClause(sortBy+" "+(desc?"desc":"asc"));
}
//通用PageHelper用法一
PageHelper.startPage(page,rows);
//我感觉侵犯你,总条数,分页语句已经执行,
List<Brand> brands = brandMapper.selectByExample(example);
//将分页数据解析
PageInfo<Brand> info = new PageInfo<>(brands);
return new PageResult<>(info.getTotal(),info.getList());
}
推荐阅读
-
扩展mybatis和通用mapper,支持mysql的geometry类型字段
-
MyBatis通用Mapper和PageHelper的过程详解
-
通用Mapper和PageHelper入门
-
Springboot集成通用Mapper与Pagehelper,实现mybatis+Druid的多数据源配置
-
Springboot集成mybatis通用Mapper与分页插件PageHelper
-
Springboot 整合通用mapper和pagehelper展示分页数据的问题(附github源码)
-
SpringBoot整合通用Mapper和PageHelper,使用PageHelper.startPage()失效的问题
-
记处理spring-devtools 和 通用mapper 使用问题
-
扩展mybatis和通用mapper,支持mysql的geometry类型字段
-
通用mapper和mybatis-spring的关系以及与之相似的spring-data-jpa