MyBatis-Plus简介和快速入门教程

MyBatis-Plus简介和快速入门教程

简介

MyBatis-Plus是基于MyBatis的增强工具,提供了常用的增删改查、分页、乐观锁、逻辑删除等功能,简化了开发人员的工作,提高了开发效率。同时 MyBatis-Plus 也支持 Lambda 表达式查询、自动代码生成等高级功能。

MyBatis-Plus 的主要特点如下:

  • 支持自动生成代码;
  • 内置通用的增删改查功能;
  • 自带分页插件;
  • 支持 Lambda 表达式查询;
  • 自带性能分析插件,可输出 SQL 语句以及所需时间。

快速入门教程

1. 引入依赖

在 pom.xml 中加入以下依赖:

<!-- MyBatis-Plus 依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.x.x</version>
</dependency>

<!-- MySQL 数据库驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

<!-- MyBatis-Plus 分页插件依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-extension</artifactId>
    <version>3.x.x</version>
</dependency>

其中,版本号请自行替换为最新版本。

2. 配置数据源

application.yml 中配置数据源:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

3. 创建实体类

创建一个实体类,例如 User

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

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

@TableName 表示 MySQL 中的表名,@TableId 表示主键自增。

4. 创建 Mapper 接口

创建 UserMapper 接口:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

BaseMapper 是 MyBatis-Plus 内置的通用 Mapper,无需编写 XML。

5. 使用 MyBatis-Plus 进行 CRUD

创建测试类 TestMyBatisPlus

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
@Slf4j
public class TestMyBatisPlus {
    @Autowired
    private UserMapper userMapper;

    @org.junit.jupiter.api.Test
    public void testInsert() {
        User user = new User();
        user.setName("张三");
        user.setAge(18);
        user.setEmail("zhangsan@example.com");
        userMapper.insert(user);
    }

    @org.junit.jupiter.api.Test
    public void testSelect() {
        User user = userMapper.selectById(1);
        log.info("user: {}", user);
    }

    @org.junit.jupiter.api.Test
    public void testUpdate() {
        User user = new User();
        user.setId(1);
        user.setName("李四");
        user.setAge(20);
        user.setEmail("lisi@example.com");
        userMapper.updateById(user);
    }

    @org.junit.jupiter.api.Test
    public void testDelete() {
        userMapper.deleteById(1);
    }

    @org.junit.jupiter.api.Test
    public void testSelectPage() {
        Page<User> page = new Page<>(1, 10);
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.lambda().gt(User::getAge, 18);
        page = userMapper.selectPage(page, wrapper);
        page.getRecords().forEach(user -> log.info("user: {}", user));
    }
}

上述代码的作用是:插入一条记录,根据 ID 查询一条记录,更新一条记录,删除一条记录,分页查询记录。

6. 运行测试

运行 TestMyBatisPlus 即可进行测试。

示例

示例1:使用 Lambda 表达式查询

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().gt(User::getAge, 18);
List<User> userList = userMapper.selectList(wrapper);

该示例的作用是:查询年龄大于 18 岁的所有用户。

示例2:自动生成代码

在 pom.xml 中添加以下依赖:

<!-- MyBatis-Plus 自动生成代码依赖 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.x.x</version>
</dependency>

application.yml 中添加以下配置:

mybatis-plus:
  generator:
    # 代码生成器的配置
    global-config:
      output-dir: src/main/java
      file-override: true
      author: MyBatis-Plus
    # 数据源的配置
    datasource:
      url: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver
    # 策略配置
    strategy:
      naming: underline_to_camel
      column-naming: underline_to_camel
      entity-lombok-model: true
      controller-restful: true
      super-entity-class: com.example.demo.entity.BaseEntity
      # 公共父类
      super-controller-class: com.example.demo.controller.BaseController
      # 公共父类
      include: t_user
      # 要生成的表
    # 包名配置
    package-info:
      parent: com.example.demo
      moduleName: module
    # 模板配置
    template:
      entity: templates/entity.java
      controller: templates/controller.java
      service: templates/service.java
      serviceImpl: templates/serviceImpl.java
      mapper: templates/mapper.java
      xml: templates/xml.java.vm

然后在 src/main/resources 下创建目录 templates,并添加以下模板文件:

  • templates/entity.java
  • templates/controller.java
  • templates/service.java
  • templates/serviceImpl.java
  • templates/mapper.java
  • templates/xml.java.vm

最后,使用以下代码生成器类生成代码:

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.TemplateConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    public static void main(String[] args){

        AutoGenerator autoGenerator = new AutoGenerator();

        autoGenerator.setGlobalConfig(new GlobalConfig()
                .setAuthor("MyBatis-Plus")
                .setOutputDir("src/main/java")
                .setFileOverride(true));

        autoGenerator.setPackageInfo(new PackageConfig()
                .setModuleName("module")
                .setParent("com.example.demo"));

        autoGenerator.setStrategy(new StrategyConfig()
                .setCapitalMode(true)
                .setNaming(NamingStrategy.underline_to_camel)
                .setColumnNaming(NamingStrategy.underline_to_camel)
                .setEntityLombokModel(true)
                .setRestControllerStyle(true)
                .setSuperEntityClass("com.example.demo.entity.BaseEntity")
                .setSuperControllerClass("com.example.demo.controller.BaseController")
                .setInclude("t_user")
                .setTablePrefix("t_"));

        autoGenerator.setTemplate(new TemplateConfig()
                .setEntity("templates/entity.java")
                .setController("templates/controller.java")
                .setService("templates/service.java")
                .setServiceImpl("templates/serviceImpl.java")
                .setMapper("templates/mapper.java")
                .setXml(null));

        autoGenerator.execute();
    }
}

该示例的作用是:自动生成实体类、Mapper 接口、业务接口、业务实现类和控制器类,无需手动编写。

以上就是 MyBatis-Plus 的简介和快速入门教程,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis-Plus简介和快速入门教程 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • MyBatis接口的简单实现原理分析

    下面我就来详细讲解“MyBatis接口的简单实现原理分析”的完整攻略。 1. MyBatis接口简介 MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解将接口和 SQL 语句映射起来。 MyBatis 接…

    Java 2023年5月20日
    00
  • java多态实现电子宠物系统

    实现电子宠物系统可以使用Java多态的特性,以下是完整攻略: 一、电子宠物系统的基本要求 电子宠物系统是模拟一个宠物的生命周期,包括喂食、玩耍、睡觉、生病等多种状态。系统需要实现以下功能: 宠物属性:宠物的名字、体力、饥饿值等属性; 宠物动作:宠物可以吃食物、玩耍、睡觉、生病、死亡等; 宠物状态:宠物会根据不同的状态进行不同的动作,例如当它饥饿时就会吃食物。…

    Java 2023年5月24日
    00
  • SpringBoot全局异常处理方案分享

    针对“SpringBoot全局异常处理方案分享”的完整攻略,可以从以下几个方面进行讲解: 1. 异常处理的基本概念 异常处理是指对不可预知的异常情况进行预判、捕获、记录、分析和处理的一种程序行为。在SpringBoot应用中,异常处理是非常重要的,它可以更好地保障应用的稳定性和可靠性。基本上,通过自定义异常处理器,我们可以捕获程序中未处理的异常,并统一处理异…

    Java 2023年5月27日
    00
  • 生成无限制的微信小程序码的示例代码

    生成无限制的微信小程序码需要通过调用微信开发者工具的接口实现。下面是详细的步骤: 1. 开启开发者工具服务器功能 在微信开发者工具的顶栏中点击“设置”按钮,在弹出的设置页面中开启“开发者工具服务”,如果之前没有设置安全域名,开启之后需要先设置安全域名。 2. 获取 session_key 调用 wx.login() 方法获取 code,然后通过以下方式获取 …

    Java 2023年5月23日
    00
  • Java统计输入字符的英文字母、空格、数字和其它

    Java 统计输入字符的英文字母、空格、数字和其他字符可以使用字符流的方式读取输入,然后通过判断每个字符的 Unicode code point 值来区分字符类型,再统计出每种类型的字符个数。下面是具体实现的完整攻略。 实现步骤 创建一个字符缓冲区的读取器 BufferedReader,从标准输入读取输入等。 循环读取每个字符,直到读到输入流末尾。 对于每个…

    Java 2023年5月27日
    00
  • Struts2学习笔记(4)-通配符的使用

    下面是对于“Struts2学习笔记(4)-通配符的使用”的完整攻略: Struts2学习笔记(4)-通配符的使用 在 Struts2中,我们可以使用通配符来匹配 URL 中的任意部分,这使得我们可以更加灵活地配置我们的 URL 地址。 下面将会分别介绍两种常见的通配符。 通配符 * * 通配符允许匹配任何字符,它通常用于模糊匹配路径名称的一部分。 下面是一个…

    Java 2023年5月20日
    00
  • MySql实现翻页查询功能

    MySql实现翻页查询功能的完整攻略 什么是翻页查询? 翻页查询是指当查询结果集的数据过多,一次显示不全,把数据分页查询以实现多页查询的技巧。这在Web应用程序中非常常用,比如搜索引擎的结果页面,商品列表页等。 实现翻页查询的方式 在MySql中,实现翻页查询可以通过limit关键字实现。limit语句限制查询结果集的行数,并且提供偏移量,以实现分页查询。 …

    Java 2023年6月15日
    00
  • Java BeanUtils工具类常用方法讲解

    Java BeanUtils工具类常用方法讲解 Java BeanUtils是Apache Commons BeanUtils组件的一部分,常用于Java Bean之间的复制、属性的拷贝等操作。下面详细讲解该工具类的常用方法。 1. BeanUtils.copyProperties方法 该方法用于将源对象的属性值拷贝到目标对象中。 public static…

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