您的位置:首页 > 编程语言 > Java开发

SpringBoot整合MyBatis+(PageHelper)分页插件

2019-06-13 18:41 423 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43301471/article/details/91883957

第一步:导入相关依赖

以下依赖是我pom.xml文件中的依赖,需要包裹在

<dependencies></dependencies>
里面,

<dependency>
<!--web端的连接依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--boot整合MyBatis时的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!--MySq数据库连接时的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--yml文件提示的配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!--使用实体类时的依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--单元测试时间的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>

第二步:配置application.yml文件:

我们刚开始的后缀名可能是properties然而我改为了yml文件
yml文件里需要utf-8编码,否则注解就会中文乱码

#数据库的配置
spring:
datasource:
#数据库配置,后面的?serverTimezone=GMT是时区配置若这串代码前还有别的代码并且已经把?(问号占用)
那么你如果再调用这个更改时区方法的时候就需要用(&)与来连接比如:?chrome=utf8&serverTimezone=GMT
url: jdbc:mysql://localhost:3306/userdb?serverTimezone=GMT
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
#MyBatis的配置
mybatis:
configuration:
#sql显示日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#数据库中如果有debe_name的字段,那么下划线(_)后面的英语就会被大写,因为要与实体类来对应
map-underscore-to-camel-case: true
#配置的时mapper文件的路径
mapper-locations: classpath:com/hyl/*/mapper/*Mapper.xml
#PageHelper的配置
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql

第三步:启动类中的文件

package com.hyl;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
//这里有两个文件夹所以才需要这个*号来把所有文件夹里面的dao接口扫描
//主要还是因为我们的三层架构,在下面会向大家讲解
@MapperScan("com.hyl.*.dao")
public class Hyl006Application {

public static void main(String[] args) {
SpringApplication.run(Hyl006Application.class, args);
}

}

第四步:创建包:共三层,


然后到现在我们的配置和创建已经干完了,接下来我们需要用到一个板块来讲解此次整合
我直接给出源码,方便小伙伴们更好的看透析

1、Pojo文件夹下的Debe实体类

package com.hyl.debe.pojo;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class Debe {
private Integer id;

private String deve_name;
}

2、为了接下来你们能更快的体验到整合那我就把表结构也奉上吧!不过数据自己填哦

create table debe(
id int primary key auto_increment,
deve_name varchar(10) not null
)

3、Mapper.xml的方法,在这里我需要着重说一下,以前可能我们的mapper文件夹是在resource文件夹下创建的,但是如果在真正开发中是要放在java根目录下,

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hyl.debe.dao.DebeMapper">
<select id="findList" resultType="com.hyl.debe.pojo.Debe">
select * from debe /*这是查全部的方法,但是后边的PageHelper也是需要在这个方法体上的*/
</select>
</mapper>

4、接下来是Dao层的方法,在这我们也就网页分页像大家传个参

package com.hyl.debe.dao;
import com.hyl.debe.pojo.Debe;
import java.util.List;

public interface DebeMapper {
List<Debe> findList();
}

5、Service层的方法,在这里参数和上次就不一样了,因为Service的参数是需要给实现层用的,所以我们为了美观点就写上:

package com.hyl.debe.service;
import com.hyl.debe.pojo.Debe;
import java.util.List;

public interface DebeService {
List<Debe> findList(int a,int b);//里面传的是参,相当于PageNum,PageSize
}

6、ServiceImpl(实现层里代码就需要实现PageHelper)所以我们的分页和整合都放到了一起,就不单独分开解说了,但是我会标明分页工具和整合代码的分工

package com.hyl.debe.serviceimpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hyl.debe.dao.DebeMapper;
import com.hyl.debe.pojo.Debe;
import com.hyl.debe.service.DebeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DebeServiceImpl implements DebeService {
@Autowired
private DebeMapper debeMapper;//这个如果导入之后有错但并没关系

@Override
public PageInfo findList(int pageNum,int pageSize) {//传的两个值
PageHelper.startPage(pageNum,pageSize);//这是把页码和条数写了上方便在浏览器上写
List<Debe> list=debeMapper.findList(); //调用了查询方法
PageInfo page = new PageInfo<>(list);  //PageInfo相当于又把list给封装了一遍
return page;						   //返回了一个分页对象
}
}

7、控制层的代码并没有什么特别的,只是返回了方法

package com.hyl.debe.controller;

import com.github.pagehelper.PageInfo;
import com.hyl.debe.pojo.Debe;
import com.hyl.debe.service.DebeService;
import com.hyl.user.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.xml.ws.Service;
import java.util.List;

@RestController
@RequestMapping("/debe")
public class DebeController {
@Autowired
private DebeService debeService;

@RequestMapping("/two")
public PageInfo findlist(int pageNum,int PageSize){
return debeService.findList(pageNum,PageSize);
}
}

此时我们来测试一下。访问接口

结果:

分页此时已经做了出来,看看我们控制台返回的数据

这个PageHelper工具最大的好处就是sql语句后面加上了(limit)
所以我们一定要更好的利用现在所有的工具。到这此篇博客已经完成,欢迎提问

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: