SpringBoot整合MyBatisPlus(十四)下

简介: SpringBoot整合MyBatisPlus(十四)

四.四 添加/修改 验证


四.四.一 添加时,自动填充 createTime 字段值


1dc996473ffae84351e7bb360100020b.png


四.四.二 修改时,自动更新 updateTime 字段值


63b09a88f5110c3480914239cf838a3c.png


五. 逻辑删除


通常,在一个表里面,删除时,并不是真正物理删除这条数据,而是逻辑删除数据。

常常用 flag, write_status 等字段来表示. 为1 时表示正常状态, 为0时,表示删除状态。

设置时,有两种, 一种是单个表设置,一种是全局性配置。


五.一 数据表 user 添加 flag 字段


-- 修改数据库中表结构, 添加一个字段作为标记
ALTER TABLE user ADD column flag TINYINT COMMENT '0表示删除,1表示正常';
-- 更新表中所有数据, 全部设置为未删除
UPDATE user SET flag=1;


五.二 单个表设置逻辑删除


五.二.一 User.java 添加flag属性和配置


  @TableField(value="flag",fill = FieldFill.INSERT)
    @TableLogic(value = "1",delval = "0")
    private Integer flag;


用 @TableLogic 注解放置在属性上, value表示正常的状态, delval 表示删除时的值信息。


五.二.二 处理自动插入 flag


@Component
@Log4j2
public class FillDateHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("createTime 字段插入开始日期");
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        //处理 flag 逻辑删除位。
        this.strictInsertFill(metaObject, "flag", Integer.class, 1);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("updateTime 字段更新修改日期");
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}


五.二.三 新增,修改,删除验证


五.二.三.一 新增


f975dd2012eb1c28a50cf8a9d478a8e6.png


五.二.三.二 修改


4db6ced27ddd53089289c2e2747629f0.png


五.二.三.三 删除


8a48e14aaafd2b3ef1f52ba4dd161cce.png


变成了逻辑删除, 令 flag=0


五.二.三.四 全部查询 findAllTest

6873ecbb64c2e1efbf9ef047f599fd2c.png


查询时,都会带上条件, flag=1 进行查询, 避免已经逻辑删除的数据被查询到。


五.三 全局配置逻辑删除


当表过多时,不应该每一个表对应的类都进行配置 逻辑删除的数据,希望全局性进行配置,便于维护.


五.三.一 application.yml 全局配置


#整合mybatis时使用的
mybatis-plus:
  # 配置 mapper文件的位置
  mapper-locations: classpath:mybatis/mapper/**/*.xml
  # 配置日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true #  配置数据库表的列别名设置
  global-config:
    db-config:
      logic-delete-field: flag   # 逻辑删除的字段
      logic-not-delete-value: 1  # 正常状态下,该字段的值
      logic-delete-value: 0      # 删除后,该字段的值
      table-underline: true # 驼峰方式转换


五.三.二 User.java 配置 flag 属性


   /*处理标识位*/
    //@TableField(value="flag",fill = FieldFill.INSERT)
    //@TableLogic(value = "1",delval = "0")
     @TableField(value="flag",fill = FieldFill.INSERT)
     @TableLogic
    private Integer flag;


五.三.三 处理自动插入 flag


@Component
@Log4j2
public class FillDateHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("createTime 字段插入开始日期");
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
        //处理 flag 逻辑删除位。
        this.strictInsertFill(metaObject, "flag", Integer.class, 1);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("updateTime 字段更新修改日期");
        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
    }
}


五.三.四 添加,修改,删除测试


e8d63ab591419b3f7b50ba6f29585353.png


添加,修改,删除,查询均与 五.二.三.四 部分相同。 这儿,老蝴蝶只给出一个插入的打印信息。


六. 分页展示


当数据量过多时,会进行分页展示。 MyBatis-Plus 自带分页处理,也支持 pagehelper-spring-boot-starter 进行分页处理.


六.一 MyBatisPlus 自带的分页 PaginationInterceptor


六.一.一 配置 PageConfig


@Component
//配置扫描哪些 mapper 
@MapperScan(value="top.yueshushu.learn.mapper")
public class PageConfig {
    /**
     * 对分页进行配置
     * @return
     */
    @Bean
    public PaginationInterceptor getPaginationInterceptor(){
        return new PaginationInterceptor();
    }
}


六.一.二 分页处理 接口和实现类


UserService.java


  Page pageUser(Integer pageNumber, Integer pageSize);


UserServiceImpl.java


   @Override
    public Page pageUser(Integer pageNumber, Integer pageSize) {
        //开启分页
        Page userPage=new Page(pageNumber,pageSize);
        //正常的查询
        userMapper.selectPage(userPage,null);
        return userPage;
    }


六.一.三 测试


  @Test
    public void pageTest(){
        Integer pageNumber=2;
        Integer pageSize=3;
        Page pageInfo=userService.pageUser(pageNumber,pageSize);
        log.info("总数:"+pageInfo.getTotal());
        List<User> userList=pageInfo.getRecords();
        userList.forEach(n->log.info(n));
    }


fba6a715175d96cc1f00a29fcfd516dc.png


可以进行分页的. 具体的分页后的数据,可以查询 Page 类


六.二 分页 pagehelper-spring-boot-starter


六.二.一 pom.xml 中添加依赖


 <!-- 引入pagehelper分页插件  注意版本号要与 mybatis-plus 进行匹配到 -->
         <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>


注意依赖的版本号, 要与 mybatis-plus 的版本号适配。


六.二.二 application.yml 配置


#分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql


六.二.三 去掉 PaginationInterceptor 的分页


//@Component
//配置扫描哪些 mapper
@MapperScan(value="top.yueshushu.learn.mapper")
public class PageConfig {
    /**
     * 对分页进行配置
     * @return
     */
    //@Bean
    public PaginationInterceptor getPaginationInterceptor(){
        return new PaginationInterceptor();
    }
}


六.二.四 分页


UserService.java


    PageInfo githubPageUser(Integer pageNumber, Integer pageSize);


UserServiceImpl.java


 @Override
    public PageInfo githubPageUser(Integer pageNumber, Integer pageSize) {
        //开启分页
        PageHelper.startPage(pageNumber,pageSize);
        //正常的查询
        List<User> userList=userMapper.selectList(null);
        //将结果转换成PageInfo对象。
        PageInfo pageInfo=new PageInfo(userList);
        return pageInfo;
    }


六.二.五 分页测试


@Test
    public void githubPageTest(){
        Integer pageNumber=2;
        Integer pageSize=3;
        PageInfo pageInfo=userService.githubPageUser(pageNumber,pageSize);
        log.info("总数:"+pageInfo.getTotal());
        List<User> userList=pageInfo.getList();
        userList.forEach(n->log.info(n));
    }


d28c4966cae5bb2708c0175dca82fd8d.png


分页是可以的。


本章节的代码放置在 github 上:


https://github.com/yuejianli/springboot/tree/develop/SpringBoot_MyBatisPlus


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
280 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
1月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
119 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
2月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
2月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
2月前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
113 2
|
3月前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
253 1
|
3月前
|
Java 关系型数据库 MySQL
1、Mybatis-Plus 创建SpringBoot项目
这篇文章是关于如何创建一个SpringBoot项目,包括在`pom.xml`文件中引入依赖、在`application.yml`文件中配置数据库连接,以及加入日志功能的详细步骤和示例代码。
|
3月前
|
数据库
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
这篇文章介绍了如何在基于SpringBoot+Vue+MybatisPlus的项目中使用elementUI的dialog组件进行用户信息的添加和删除操作,包括弹窗表单的设置、信息提交、数据库操作以及删除前的信息提示和确认。
elementUi使用dialog的进行信息的添加、删除表格数据时进行信息提示。删除或者添加成功的信息提示(SpringBoot+Vue+MybatisPlus)
|
3月前
|
Java 数据库 Spring
MyBatisPlus分页插件在SpringBoot中的使用
这篇文章介绍了如何在Spring Boot项目中配置和使用MyBatis-Plus的分页插件,包括创建配置类以注册分页拦截器,编写测试类来演示如何进行分页查询,并展示了测试结果和数据库表结构。
MyBatisPlus分页插件在SpringBoot中的使用