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

第一步:导入相关依赖

以下依赖是我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)
所以我们一定要更好的利用现在所有的工具。到这此篇博客已经完成,欢迎提问

扫描二维码关注公众号,回复: 11330999 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_43301471/article/details/91883957