SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页

目录

  • Spring Boot 的数据访问:
    • 一、Spring Boot整合JdbcTemplatedbc:
    • 二、使用德鲁伊数据源(旧方式,不推荐):
    • 三、更简洁的使用数据源(德鲁伊数据源starter整合方式):
      • springboot中使用Druid :
        • 1.引入Druid Spring Boot Starter:
        • 2.添加配置:
      • 2.配置属性:
    • 四、Springboot整合mybatis:
      • 扫描映射器
      • 1.纯注解版的springboot整合mybatis
      • 2.混合版的mybatis:
    • 五、Springboot整合mybatis-plus
      • 查询用户:
      • MyBatis-Plus的分页插件的使用:
      • 配置mybatis的分页插件:
    • 六、使用模态框实现新增和修改:
      • 删除用户:
    • 七、条件查询的分页:

Spring Boot 的数据访问:

一、Spring Boot整合JdbcTemplatedbc:

Spring对数据库的操作在jdbc上面做了更深层次的封装,而JdbcTemplate便是Spring提供的一个操作数据库的便捷工具。我们可以借助JdbcTemplate来执行所有数据库操作,例如插入,更新,删除和从数据库中检索数据,并且有效避免直接使用jdbc带来的繁琐编码。

当然,在大部分情况下,我们都会直接使用更加强大的持久化框架来访问数据库,比如MyBatis、Hibernate或者Spring Data JPA,我们这里讲解JdbcTemplate的整合,只是告诉大家有这么一种操作数据库的方式。
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第1张图片

导入数据源的场景和数据库驱动:要使用JdbcTemplatedbc则导入这两个依赖配合使用

 
        
            org.springframework.boot
            spring-boot-starter-data-jdbc
        
        
        
            mysql
            mysql-connector-java
        

springboot默认自动进行了mysql版本仲裁:
8.0.23
但是不一定和我们本机的mysql版本对应:这时候我们要保持版本一致。
在这里插入图片描述

解决方法一:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第2张图片
方法二:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第3张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第4张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第5张图片
添加相关yml配置:

1.yml中添加数据源配置:
在application.yml中 ,添加MySQL数据源的连接信息。
2.配置数据库的必要参数值:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第6张图片
说明:yml中的jdbc.template.下的query-timeout可以不用配置(建议不配置此项);

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第7张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第8张图片

测试:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第9张图片
代码演示:

package com.fan.redis;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.jdbc.core.JdbcTemplate;

@SpringBootTest
class SpringbootRedisApplicationTests {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Test
    void testjdbcTemplate(){
        Integer integer = jdbcTemplate.queryForObject("select  count(*) from user ", Integer.class);
        System.out.println("查出的记录数:"+integer);
    }
}

效果:查出的记录数:7

二、使用德鲁伊数据源(旧方式,不推荐):

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第10张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第11张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第12张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第13张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第14张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第15张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第16张图片
监控页:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第17张图片

测试:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第18张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第19张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第20张图片

加入监控功能:SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第21张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第22张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第23张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第24张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第25张图片

开启防火墙;

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第26张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第27张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第28张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第29张图片

配置登录名字:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第30张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第31张图片

刷新:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第32张图片

可以先登录后台管理,然后路径改成sql,这样就有了session的信息了。

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第33张图片

三、更简洁的使用数据源(德鲁伊数据源starter整合方式):

Druid连接池的介绍:

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
在这里插入图片描述

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第34张图片

springboot中使用Druid :

1.引入Druid Spring Boot Starter:

Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第35张图片

        
            com.alibaba
            druid-spring-boot-starter
            1.1.17
        

2.添加配置:

spring.datasource.url= 
spring.datasource.username=
spring.datasource.password=
# ...其他配置(可选,不是必须的,使用内嵌数据库的话上述三项也可省略不填,使用druid的话不能省略)

2.配置属性:

Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,你可以通过 Spring Boot 配置文件来配置Druid数据库连接池和监控,如果没有配置则使用默认值。

JDBC 配置

spring.datasource.druid.url= # 或spring.datasource.url= 
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=

连接池配置:

spring.datasource.druid.initial-size=
spring.datasource.druid.max-active=
spring.datasource.druid.min-idle=
spring.datasource.druid.max-wait=
spring.datasource.druid.pool-prepared-statements=
spring.datasource.druid.max-pool-prepared-statement-per-connection-size= 
spring.datasource.druid.max-open-prepared-statements= #和上面的等价
spring.datasource.druid.validation-query=
spring.datasource.druid.validation-query-timeout=
spring.datasource.druid.test-on-borrow=
spring.datasource.druid.test-on-return=
spring.datasource.druid.test-while-idle=
spring.datasource.druid.time-between-eviction-runs-millis=
spring.datasource.druid.min-evictable-idle-time-millis=
spring.datasource.druid.max-evictable-idle-time-millis=
spring.datasource.druid.filters= #配置多个英文逗号分隔
....//more

监控配置:

# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled= #是否启用StatFilter默认值false
spring.datasource.druid.web-stat-filter.url-pattern=
spring.datasource.druid.web-stat-filter.exclusions=
spring.datasource.druid.web-stat-filter.session-stat-enable=
spring.datasource.druid.web-stat-filter.session-stat-max-count=
spring.datasource.druid.web-stat-filter.principal-session-name=
spring.datasource.druid.web-stat-filter.principal-cookie-name=
spring.datasource.druid.web-stat-filter.profile-enable=

# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled= #是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
spring.datasource.druid.stat-view-servlet.url-pattern=
spring.datasource.druid.stat-view-servlet.reset-enable=
spring.datasource.druid.stat-view-servlet.login-username=
spring.datasource.druid.stat-view-servlet.login-password=
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.deny=

# Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔

Druid Spring Boot Starter 不仅限于对以上配置属性提供支持,DruidDataSource 内提供setter方法的可配置属性都将被支持。你可以参考WIKI文档或通过IDE输入提示来进行配置。配置文件的格式你可以选择.properties或.yml,效果是一样的,在配置较多的情况下推荐使用.yml。

分析自动配置

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第36张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第37张图片
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第38张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第39张图片
找此类:DruidDataSourceAutoConfigure
在这里插入图片描述

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第40张图片

springboot配置文件中数据源的各项配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    password: root
    username: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    #type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
    druid:
      aop-patterns: com.fan.admin.*  #监控springbean
      filters: stat,wall  #底层开启功能,stat(sql监控),wall(防火墙)

      stat-view-servlet: #配置监控页功能
        enabled: true
        login-username: admin
        login-password: 123
        reset-enable: false

      web-stat-filter: #监控web
        enabled: true
        url-pattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

      filter: #对上面filter里面的stat的详细配置,防火墙的配置
        stat:
          slow-sql-millis: 1000
          log-slow-sql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
  jdbc:
    template:
      query-timeout: 3


SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第41张图片
代码演示,数据层使用mybatis,结合thymleaf进行测试

JDBC依赖必须要?
总结:无论springboot整合mybatis框架,还是springboot整合web资源,都不用添加jdbc依赖。

1.maven依赖:


        
        
            mysql
            mysql-connector-java
            runtime
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.4
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
            
            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.4.0
                
                    
                        mysql
                        mysql-connector-java
                        8.0.22
                    
                
            
        
    

2.然后配置application.yal:

spring:
  #jdbc配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useSSL=false&serverTimezone=UTC

  #开启restful风格支持
  mvc:
    hiddenmethod:
      filter:
        enabled: true

#mybatis基本配置
mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml

3.写一个简单的HelloController进行测试:

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model){
        model.addAttribute("msg","thymleaf,你好");
        return "hello";
    }
}

4.templates下的hello.html:




    
    Title


成功页面

测试结果:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第42张图片
然后我们测试mybatis:

1.然后我们使用逆向工程的工具:generatorConfig.xml:





    
    
    
    

    

        
        
            
            
        

        
        
        


        
        
            
        


        
        

            
            
            
            
            
            
            
            
        

        
        
            
        

        
        
            
        

        
        

2.然后在maven的plugins中找到mybatis-generator工具,并运行,注意要先在数据库中创建好表且不要用user名字的表(存在冲突,遇到过这个坑),和不能在多个数据库中有相同的表名(遇到过这个坑)。

3.然后我们就可以在测试类中测试:

@SpringBootTest
class SpringbootAdminweb01ApplicationTests {

    @Resource
    LoginUserMapper loginUserMapper;

    @Test
    void contextLoads() {
        int x = loginUserMapper.insert(new LoginUser(null, "fandongdong", "123"));
        System.out.println(x);
    }
}

正常情况下会测试成功的。这样想让我们的数据库跑起来。

参照官方文档:
https://github.com/alibaba/druid

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

四、Springboot整合mybatis:

第一步:引入相应的场景启动器:

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.4
        

第二步:配置:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第43张图片

注意我们把mybatis全局配置文件编写完后,一定要将全局配置文件的位置告诉springboot的总配置文件application.yml

通过mybatis.config-location: (全局配置文件的位置)
通过此配置mybatis.mapper.location:(sql映射文件的位置)
mapper接口的位置通过@MapperScan(“com.fan.mapper”)来告知springboot;

注意我们也可以这样设置,不需要mybatis-config.xml文件,和此配置:config-location: classpath:mybatis-config.xml

然后mybatis的全局配置文件中什么也不用写:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第44张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第45张图片

扫描映射器

无需一一注册所有映射器。相反,您可以让MyBatis-Spring扫描它们的类路径。

有三种不同的方法可以做到这一点:

使用mybatis:scan元素。
使用注释 @MapperScan(推荐使用)
使用经典的Spring xml文件并注册 MapperScannerConfigurer
双方mybatis:scan/并@MapperScan在MyBatis的spring1.2.0引入的功能。@MapperScan需要Spring 3.1或更高版本。

从2.0.2开始,映射器扫描功能支持选项(lazy-initialization),该选项控制启用/禁用映射器bean的延迟初始化。添加该选项的动机是支持Spring Boot 2.2支持的惰性初始化控制功能。此选项的默认值为false(=不使用延迟初始化)。如果开发人员想要对映射器bean使用延迟初始化,则应将其设置为trueexpress。

重要的如果使用延迟初始化功能,则开发人员需要了解以下限制。如果满足以下任一条件,则通常无法在应用程序上使用延迟初始化功能。

当使用()和()引用其他映射器的语句时@One@Many
当包括对的片段其他映射器使用
当使用()引用其他映射器的缓存时@CacheNamespaceRef
当使用()引用其他映射器的结果映射时@ResultMap

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第46张图片
UserMapper.xml




    
    

Mapper接口:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第47张图片

package com.fan.admin.mapper;

import com.fan.admin.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper//Mapper接口
public interface UserMapper {
    //此接口方法的实现我们写在xml文件中
    public User getUser(Integer id);
}

Service代码:

package com.fan.admin.service;

import com.fan.admin.entity.User;
import com.fan.admin.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;


@Service("userService")
public class UserService {
    @Resource//这里使用此注解避免报错
    private UserMapper userMapper;//注入Mapper接口

    public User getUser(Integer id){
        return userMapper.getUser(id);
    }
}

Cntroller代码:

package com.fan.admin.controller;

import com.fan.admin.entity.User;
import com.fan.admin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

@Controller
public class SqlStateController {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Resource
    private UserService userService;//注入service组件

    @ResponseBody
    @GetMapping("/user")
    public User getUserById(@RequestParam("id") Integer id){
        User user = userService.getUser(id);
        return user;
    }
}

mybatis-config.xml文件:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第48张图片




    
    
        
    

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第49张图片

两种开启驼峰命名的方式只能选择一个:不然报错

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第50张图片
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第51张图片

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  #configuration:
    #map-underscore-to-camel-case: true

测试:
在这里插入图片描述

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第52张图片

1.纯注解版的springboot整合mybatis

mapper接口:操作数据库的,相当于实体层
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第53张图片
service:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第54张图片

controller:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第55张图片

纯注解版的mybatis就不需要sql映射文件了。因为我们已经在mapper接口那里写了。
测试:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第56张图片

2.混合版的mybatis:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第57张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第58张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第59张图片

测试:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第60张图片

纯注解版的mybatis:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第61张图片

最佳实践:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第62张图片

五、Springboot整合mybatis-plus

mybatis-plus的官网:
https://mp.baomidou.com/

MybatisX快速开发插件:
MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。

安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装。
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第63张图片
mybatis-plus快速开始:
第一步,先创建一张表:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第64张图片

引入依赖;

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第65张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第66张图片

看自动配置类的原理:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第67张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第68张图片

查询用户:

mapper映射文件的位置,默认是类路径下的mapper文件夹下:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第69张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第70张图片
mybatis-plus自动配置好了哪些东西:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第71张图片

实体类准备:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第72张图片

我们定义的mapper接口继承一个BaseMapper:

其中基础的mapper中已经声明好了一些方法:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第73张图片
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第74张图片
代码:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第75张图片

测试结果:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第76张图片

解决数据库的表名和实体类名不一致的方法:
默认情况下类名会去数据库中找和它实体类名一样的表。

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第77张图片

修改service接口和实现类:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第78张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第79张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第80张图片

MP快速开始的小结:
通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

从以上步骤中,我们可以看到集成MyBatis-Plus非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。

MyBatis-Plus的分页插件的使用:

mybatis原生的分页插件的官方文档:
链接: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md.

mybatis与springboot结合的分页的官方文档:
链接: https://github.com/pagehelper/pagehelper-spring-boot.

MyBatis-Plus参考链接:
链接: https://www.cnblogs.com/l-y-h/p/12859477.html.
https://www.cnblogs.com/l-y-h/p/12859477.html

找到分页条,我们拿来用一下,然后在页面审查元素,右键copy-copy element即可,放到table表格下,然后ctrl+alt+l 进行代码的格式化。
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第81张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第82张图片

前端传递一个当前的页码:后台接收
在这里插入图片描述

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第83张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第84张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第85张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第86张图片

配置mybatis的分页插件:

我们可以参考官网的设置,进行部分修改即可:
https://mp.baomidou.com/guide/page.html

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第87张图片
分页的一些参数设置:

com.fan.admin.config.MybatisConfig的编写:

package com.fan.admin.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfig {
    // 最新版
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.H2);
        paginationInnerInterceptor.setOverflow(true);
        paginationInnerInterceptor.setMaxLimit(500L);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }
}

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第88张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第89张图片


SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第90张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第91张图片
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第92张图片
分页的前端代码:


 
当前第 [[${page.current}]]页, 共[[${page.pages}]]页, 一共[[${page.total}]]条记录

分页有关的js:





分页的后台代码controller:

//无条件的分页查找
    @GetMapping("/dynamic_table_bookPage")
    public String dynamic_table_bookPage(
            @RequestParam(required = true,defaultValue = "1",value = "pageNum")Integer pageNum,
            @RequestParam(defaultValue = "3",value = "pageSize")Integer pageSize,
            Model model
    ){
        if(pageNum==null || "".equals(pageNum)){
            pageNum = 1;
        }
        if(pageSize == null || "".equals(pageSize)) {
            pageSize = 3;
        }
        Page bookPage = new Page<>(pageNum, pageSize);

        System.out.println("bookPage***********"+bookPage);

        Page page = bookService.getBaseMapper().selectPage(bookPage, null);
        page.getRecords().forEach(System.out::println);

        model.addAttribute("page",page);

        return "table/dynamic_table_book";
    }

六、使用模态框实现新增和修改:

 
 
 

 
 

新增和修改的js代码:

//打开新增模态框
    $("#insert_open").click(function () {
        alert("打开新增表单");
        //重置表单
        $('#layer_form')[0].reset();//重置表单
        $("#myModalLabel").text("新增图书");

        //设置表单的action
        $("#layer_form").prop("action","/book/insertBook");
        //弹出模态框
        $("#myModal").modal('show');
    });





后台controller代码:

 //增加
    @PostMapping("/insertBook")
    public String insertBook(Model model,Book book){
        log.info("前端参数:{}",book);
        boolean save = bookService.save(book);
        if(save){
            return "redirect:/book/dynamic_table_bookPage";//重新定向到查询
        }else {
        model.addAttribute("msg","添加失败");
        }

        return "table/dynamic_table_book";
    }
    //修改要经过两个步骤,回显和更新
    @ResponseBody
    @PostMapping("/selectById")
    public Book selectById(Model model,@RequestParam(value = "id") Integer id){

        Book book = bookService.getById(id);
        System.out.println("查询回显数据^^^^^^^^^^^^:"+book);
        //model.addAttribute("book",book);
        return book;
    }

    @PostMapping("/updateBook")
    public String updateBook(Model model, Book book){

        boolean b = bookService.updateById(book);
        System.out.println("修改:==========================="+book);

        return "redirect:/book/dynamic_table_bookPage";
    }

优化:新增和修改后回到修改的那一页:
添加图书的:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第93张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第94张图片
自己项目中的:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第95张图片
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第96张图片

修改图书的:
在这里插入图片描述
后台代码:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第97张图片

删除用户:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第98张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第99张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第100张图片

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第101张图片

 
   
    删除

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第102张图片

 //删除一个用户,使用路径变量的方式
    @GetMapping("/user/delete/{id}")
    public String deleteUserById(@PathVariable("id") Integer id,
                                 @RequestParam(value = "pn",defaultValue = "1")Integer pn,
                                 RedirectAttributes re){
        userService.removeById(id);
        re.addAttribute("pn",pn);
        return "redirect:/dynamic_table";
    }

删除用户的时候将但钱页码也发送过去:
在这里插入图片描述
后台也改一下:
SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第103张图片

七、条件查询的分页:

查询参数的回显:

SpringBoot笔记5-整合数据库和MyBatis分页/MyBatis-plus分页_第104张图片

你可能感兴趣的:(springboot,mybatis-plus,java)