一.创建springboot项目,配置pom.xml,导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
二.yml中进行相关配置,链接相应数据库
datasource:
url: jdbc:mysql://localhost:3306/admin?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
username: root
password: 2020
driver-class-name: com.mysql.cj.jdbc.Driver
三.domain层创建Teacher.java
@Data
@NoArgsConstructor//无参的构造函数
@AllArgsConstructor//实参的构造函数
public class Teacher implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)//id的名字,id的类型:是一个自增的id
private Integer id;
@TableField("Teacher_name")
private String teacherName;
@TableField("Teacher_account")
private String teacherAccount;
private String password;
四:在config层创建MybatisPlusConfig.java
@Configuration
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor page = new PaginationInnerInterceptor(DbType.MYSQL);//分页拦截器,把数据库类型注入进去
//如果数据返回量太高,首先不是正常量的操作,其次内存会被严重占用,会导致OOM问题的
page.setMaxLimit(500L);//最多返回500条数据
interceptor.addInnerInterceptor( page);//追加拦截器
return interceptor;
}
五.在controller层创建相关Controller文件
@RequestMapping("/selectPage/{pageIndex}")//实现分页查询
@ResponseBody
public R selectPage(@PathVariable("pageIndex") Integer pageIndex){
QueryWrapper<Teacher> qw =new QueryWrapper<>();
//1-当前页数 2-每页显示的记录数
Page<Teacher> page=new Page<>(pageIndex,3);
IPage<Teacher> teacher=teacherService.page(page,qw);
//获取分页后的记录
List<Teacher> Teachers =teacher.getRecords();
System.out.println("Teachers.size()="+Teachers.size());
//分页信息
long pages = teacher.getPages();
System.out.println(""+pages);
System.out.println(""+teacher.getTotal());
System.out.println(""+teacher.getCurrent());
System.out.println(""+teacher.getSize());
return R.success(teacher);
}
注意:这里Return的R需要另外创建一个R.class,通用返回结果,服务端响应的数据最终都会封装成此对象
@Data//只要不返回R就可以省略这步
public class R<T> {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //提示信息
private T data; //数据
private Map map = new HashMap(); //动态数据
private boolean flag;//标记符
public R() {
}
public R(Integer code, String msg, T data, Map map, boolean flag) {
this.code = code;
this.msg = msg;
this.data = data;
this.map = map;
this.flag = flag;
}
public static <T> R<T> success(T object) {
R<T> r = new R<T>();
r.data = object;
r.code = 200;
r.flag = true;
return r;
}
public static <T> R<T> success(String msg) {
R<T> r = new R<T>();
r.code = 200;
r.msg = msg;
r.flag = true;
return r;
}
public static <T> R<T> error(String msg) {
R r = new R();
r.msg = msg;
r.code = 300;
r.flag = false;
return r;
}
public R<T> add(String key, Object value) {
this.map.put(key, value);
return this;
}
其他层就不再赘述(基本不用添加新的数据)
六.在搜索栏输入相应地址
如此就可以实现mybatis-plus的分页查询啦