数据库CURD必备搭档mybatis plus详解

yizhihongxing

数据库CURD必备搭档mybatis plus详解

什么是MyBatis Plus

MyBatis Plus是一个基于MyBatis的增强工具,简化了MyBatis的操作,减少了开发人员的工作量,让开发人员能够更加专注于业务逻辑的实现。

MyBatis Plus的常用功能

  1. 快速Mapper接口的开发
  2. 自动分页
  3. 自动注入公共字段
  4. 代码生成器

快速开发Mapper接口

MyBatis Plus 提供了一个BaseMapper接口,这个接口实现了一些CRUD的基本方法,我们可以通过继承这个接口,快速开发Mapper接口。

public interface UserMapper extends BaseMapper<User> {
  // 自定义Mapper接口方法
  List<User> selectAll();
}

以上代码我们就定义了一个UserMapper的接口,并且继承了BaseMapper接口,我们不需要再去编写一些基本的SQL语句,就可以直接使用BaseMapper的方法进行CRUD操作。如果我们还需要自定义一些语句,可以在接口中定义其他方法。

自动分页功能

// 手动实现分页
Page<User> page = new Page<>(1, 10);
List<User> userList = userMapper.selectPage(page, null);
page.setRecords(userList);

// 使用自动分页
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 20);
IPage<User> userIPage = userMapper.selectPage(new Page<>(1, 10), wrapper);
List<User> users = userIPage.getRecords();

以上代码我们使用了自动分页的功能,只需要在传入Page参数的时候,同时传入查询条件即可,查询结果会自动分页返回。

自动注入公共字段

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
  @Override
  public void insertFill(MetaObject metaObject) {
    this.strictInsertFill(metaObject, "createBy", Long::valueOf, "admin");
    this.strictInsertFill(metaObject, "createTime", Date::new, new Date());
    this.strictInsertFill(metaObject, "updateBy", Long::valueOf, "admin");
    this.strictInsertFill(metaObject, "updateTime", Date::new, new Date());
  }

  @Override
  public void updateFill(MetaObject metaObject) {
    this.strictUpdateFill(metaObject, "updateBy", Long::valueOf, "admin");
    this.strictUpdateFill(metaObject, "updateTime", Date::new, new Date());
  }
}

以上代码我们定义了一个 MyMetaObjectHandler 的类,并实现了 MetaObjectHandler 接口,然后重写了它的 insertFill 和 updateFill 方法,在这两个方法里,我们将公共字段以及对应的值进行设置,接下来我们在需要自动设置的实体类上加上 @TableField 注解即可。

@Data
@TableName(value = "t_user")
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField(value = "name")
    private String name;
    @TableField(value = "age")
    private Integer age;
    @TableField(value = "email")
    private String email;
}

MyBatis Plus的代码生成器

MyBatis Plus 还提供了一个代码生成器,可以根据已有的数据库结构,自动生成对应的实体类、Mapper接口以及Mapper.xml文件。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.2</version>
</dependency>

以上代码我们需要在项目中引入 mybatis-plus-generator 的依赖,并添加以下代码,来生成对应文件。

public class CodeGenerator {
  public static void main(String[] args) {
    AutoGenerator mpg = new AutoGenerator();
    String projectPath = System.getProperty("user.dir");
    // 全局配置
    GlobalConfig gc = new GlobalConfig();
    gc.setOutputDir(projectPath + "/src/main/java");
    gc.setAuthor("authorName");
    gc.setOpen(false);
    mpg.setGlobalConfig(gc);
    // 数据源配置
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test");
    dsc.setDriverName("com.mysql.jdbc.Driver");
    dsc.setUsername("root");
    dsc.setPassword("root");
    mpg.setDataSource(dsc);
    // 包配置
    PackageConfig pc = new PackageConfig();
    pc.setModuleName("test");
    pc.setParent("com.example");
    mpg.setPackageInfo(pc);
    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    strategy.setTablePrefix("t_");
    strategy.setInclude("t_user");
    strategy.setNaming(NamingStrategy.underline_to_camel);
    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    mpg.setStrategy(strategy);
    // Mapper 配置
    mpg.setTemplateEngine(new FreemarkerTemplateEngine());
    TemplateConfig templateConfig = new TemplateConfig();
    templateConfig.setXml(null);
    mpg.setTemplate(templateConfig);
    //执行生成
    mpg.execute();
  }
}

以上代码我们定义了一个 CodeGenerator 的类,主要设置了文件输出路径、作者,数据库连接信息以及生成器的包策略,我们只需要将它运行一次,就可以生成所需的 Mapper 接口、实体类和 Mapper.xml 文件。

总结

MyBatis Plus作为MyBatis的一个增强工具,提供了许多方便开发者使用的功能,如快速开发Mapper接口,自动分页,自动注入公共字段以及代码生成器等功能。在实际开发中,可以大幅度提高开发效率,减少了开发人员的工作量,使开发人员更加专注业务逻辑实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:数据库CURD必备搭档mybatis plus详解 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • JSP 开发之Spring BeanUtils组件使用

    JSP 开发之Spring BeanUtils 组件使用 Spring BeanUtils 是 Spring 框架中非常常用的一个工具类,其提供了很多方便快捷的方法用于对象属性之间的复制。本文将通过两个示例来详细讲解 Spring BeanUtils 组件的使用方法。 一、示例一:简单属性复制 下面是一个使用 Spring BeanUtils 完成简单属性复…

    Java 2023年6月15日
    00
  • springboot集成mybatis官方生成器

    下面我会详细讲解“Spring Boot 集成 MyBatis 官方生成器”的完整攻略。 简介 在使用 MyBatis 进行开发时,为了提高开发效率、减少重复的代码编写,可以使用 MyBatis 官方生成器。而 Spring Boot 是一种优秀的 Java Web 开发框架,本文将会介绍如何在 Spring Boot 框架中集成 MyBatis 官方生成器…

    Java 2023年5月20日
    00
  • java实现简易飞机大战

    Java实现简易飞机大战攻略 项目背景 飞机大战是一款经典的射击类游戏,玩家所扮演的角色是一架飞机,在空中飞行并与敌人战斗,通过不断的击败敌人来提升分数。本文将详细讲解如何使用Java实现一个简易版的飞机大战游戏。 实现步骤 创建游戏窗口 使用Java Swing组件,通过继承JFrame类来创建一个游戏窗口。在窗口中添加画布,用于绘制游戏背景和各种游戏元素…

    Java 2023年5月23日
    00
  • Java详解IO流创建读取与写入操作

    Java详解IO流创建读取与写入操作 在Java中,IO流是常用的操作方式之一。它提供了操作文件、处理数据、网络编程等方便的工具。本文将详细讲解Java中IO流的使用,包括流的类型、如何创建文件、读取文件和写入文件等操作。 流的类型 在Java中,IO流通常分为两类:字节流和字符流。字节流是以字节为单位进行操作的,它通常用于操作二进制数据。而字符流是以字符为…

    Java 2023年5月26日
    00
  • java限流算法详细

    Java限流算法详细攻略 什么是限流算法 限流算法是一种流行的控制流量的技术,通常是在高并发的系统中使用,用于控制请求的流量以避免系统过载。在某些情况下,如果系统不稳定地处理过多的请求,系统可能会崩溃,因此限流算法的作用显得尤为重要。 常见的限流算法 以下是几种常见的限流算法: 1.计数器算法 计数器算法是一种特别基础的算法,思路就是所有的请求都进入一个计数…

    Java 2023年5月19日
    00
  • Java8新特性之Lambda表达式浅析

    Java8新特性之Lambda表达式浅析 Lambda表达式是Java8中最重要的新特性之一,它允许将函数作为参数传递,甚至可以创建其它的函数。Lambda表达式的简洁优雅,使得我们能够以更少的代码实现更为复杂的逻辑。本文将深入浅出地讲解Lambda表达式的使用方法及其内部实现细节。 Lambda表达式的基础语法 Lambda表达式使用一组参数和一个函数体组…

    Java 2023年5月26日
    00
  • Maven的安装配置详解

    Maven的安装配置详解 Maven是一种项目管理工具,它可以自动化构建过程并管理项目的依赖关系。Maven使用XML描述项目,使用“pom.xml”文件配置项目的基本信息、依赖以及构建方式。 本文将详细讲解Maven的安装和配置步骤。 安装Maven 访问Maven官网https://maven.apache.org/,下载最新的Maven版本(目前是3.…

    Java 2023年6月2日
    00
  • SpringSecurity Jwt Token 自动刷新的实现

    下面是SpringSecurity Jwt Token 自动刷新的实现的完整攻略。 1. 什么是Jwt Token? Jwt Token(也称为 Json Web Token)是一种基于 JSON 格式的身份验证标准。通常用于 RESTful API,作为一种简单、轻量级的身份验证机制,用于跨域身份验证,以及在分布式系统中传递身份信息。它包含了三部分: He…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部