浅谈MyBatis-plus入门使用

浅谈MyBatis-plus入门使用

MyBatis-plus(以下简称MP)是一个为MyBatis框架提供增强功能的第三方库,旨在简化MyBatis的开发。本文将深入浅出地探讨MP的入门使用。

安装

将以下依赖添加到Maven或Gradle项目中:

<!-- MyBatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>{latest version}</version>
</dependency>

其中最新版本可以从官网获得。

配置

在application.properties中或application.yml中添加如下配置:

mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml # Mapper.xml文件所在目录
  type-aliases-package: com.example.entity # 实体类所在包名

常用功能

代码生成器

MP提供了一个代码生成器,可以快速生成Mapper、Service、Controller等代码。使用方法如下:

  1. 引入依赖
<!-- MyBatis-plus代码生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>{latest version}</version>
</dependency>
  1. 配置generator.properties文件
# 数据库连接信息
data.jdbc.url=
data.jdbc.username=
data.jdbc.password=
data.jdbc.driver=
# 作者信息
author=
# 生成文件所在包名
package.name=com.example
# Mapper、Entity、Mapper.xml文件生成目录
path.mapper=M:\example\src\main\java
path.entity=M:\example\src\main\java
path.mapper.xml=M:\example\src\main\resources\mapper
  1. 运行代码
public class CodeGenerator {

    public static void main(String[] args) {
        // 数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig()
                .setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai")
                .setUsername("root")
                .setPassword("root")
                .setDriverName("com.mysql.jdbc.Driver");

        // 全局配置
        GlobalConfig globalConfig = new GlobalConfig()
                .setOutputDir("M:\\example\\src\\main\\java")
                .setAuthor("作者姓名")
                .setOpen(false)
                .setFileOverride(true);

        // 策略配置
        StrategyConfig strategyConfig = new StrategyConfig()
                .setNaming(NamingStrategy.underline_to_camel) // 下划线转驼峰命名
                .setColumnNaming(NamingStrategy.underline_to_camel)
                .setEntityLombokModel(true) // 实体类自动添加Lombok注解
                .setRestControllerStyle(true); // Controller为RestController风格

        // 包名策略配置
        PackageConfig packageConfig = new PackageConfig()
                .setParent("com.example")
                .setController("controller")
                .setService("service")
                .setServiceImpl("service.impl")
                .setMapper("mapper")
                .setEntity("entity");

        // 代码生成器配置
        AutoGenerator autoGenerator = new AutoGenerator()
                .setDataSource(dataSourceConfig)
                .setGlobalConfig(globalConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig);

        // 执行生成器
        autoGenerator.execute();
    }

}

分页查询

MP提供了一个分页查询插件,在Mapper接口中使用方法如下:

public interface UserMapper extends BaseMapper<User> {

    IPage<User> selectUserPage(Page<User> page, @Param("name") String name);

}

其中IPage表示分页查询结果,Page表示分页信息,@Param表示用于传递查询条件。

在Service中调用:

public IPage<User> getUserByPage(int pageNum, int pageSize, String name) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectUserPage(page, name);
}

其中pageNum表示页码,pageSize表示每页的记录数。

示例

示例1:使用MP的代码生成器生成代码

  1. 参照上文的配置,配置generator.properties文件和代码生成器运行类
  2. 运行代码生成器,查看生成的代码目录下是否生成了Mapper、Entity、Mapper.xml等文件
public class CodeGeneratorExample {

    public static void main(String[] args) {
        DataSourceConfig dataSourceConfig = new DataSourceConfig()
                .setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai")
                .setUsername("root")
                .setPassword("root")
                .setDriverName("com.mysql.jdbc.Driver");

        GlobalConfig globalConfig = new GlobalConfig()
                .setOutputDir("M:\\example\\src\\main\\java")
                .setAuthor("Mybatis-plus")
                .setOpen(false)
                .setFileOverride(true);

        StrategyConfig strategyConfig = new StrategyConfig()
                .setNaming(NamingStrategy.underline_to_camel) // 下划线转驼峰命名
                .setColumnNaming(NamingStrategy.underline_to_camel)
                .setEntityLombokModel(true) // 实体类自动添加Lombok注解
                .setRestControllerStyle(true); // Controller为RestController风格

        PackageConfig packageConfig = new PackageConfig()
                .setParent("com.example")
                .setController("controller")
                .setService("service")
                .setServiceImpl("service.impl")
                .setMapper("mapper")
                .setEntity("entity");

        AutoGenerator autoGenerator = new AutoGenerator()
                .setDataSource(dataSourceConfig)
                .setGlobalConfig(globalConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig);

        autoGenerator.execute();
    }

}

示例2:使用MP进行分页查询

  1. 编写Mapper接口方法:
public interface UserMapper extends BaseMapper<User> {

    IPage<User> selectUserPage(Page<User> page, @Param("name") String name);

}
  1. 编写Service方法:
public IPage<User> getUserByPage(int pageNum, int pageSize, String name) {
    Page<User> page = new Page<>(pageNum, pageSize);
    return userMapper.selectUserPage(page, name);
}

其中userMapper是自定义的Mapper接口,User是自定义的实体类,name是查询条件。

总结

本文详细介绍了MP的入门使用,包括安装、配置、常用功能和示例。希望对初学者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈MyBatis-plus入门使用 - Python技术站

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

相关文章

  • Java10新特性解读

    Java10新特性解读 Java10是Java语言的最新版本,自2018年3月正式发布以来,引入了不少新特性和改进。本文将详细解析Java10的新特性,并给出一些相应的示例。 局部变量类型推断 在Java10中,引入了一项新特性:局部变量类型推断。这意味着,当我们声明局部变量时,可以使用var关键字代替显式类型声明。编译器将根据变量的初始值来自动推断其类型。…

    Java 2023年5月19日
    00
  • Spring MVC 基于URL的映射规则(注解版)

    简介 在Spring MVC中,我们可以使用注解来定义URL映射规则。这种方式比传统的XML配置更加简洁和灵活。本文将详细介绍Spring MVC基于URL的映射规则(注解版),并提供两个示例说明。 基于URL的映射规则 在Spring MVC中,我们可以使用@RequestMapping注解来定义URL映射规则。以下是一个使用@RequestMapping…

    Java 2023年5月17日
    00
  • SpringBoot详解如果通过@Value注解给静态变量注入值

    下面为您详细讲解“Spring Boot通过@Value注解给静态变量注入值”的攻略。 背景介绍 在Spring Boot开发中,我们通常使用@ConfigurationProperties注解来为Java Bean注入外部配置属性。但是,如果我们需要为静态变量注入外部属性,就需要使用@Value注解。 示例 示例1:注入基本数据类型 首先,让我们看一个简单…

    Java 2023年5月20日
    00
  • Java Stream流的常见生成和操作方法总结

    Java Stream流的常见生成和操作方法总结 生成Stream流的常见方式 1. 通过Collection接口生成 可以通过Collection接口提供的stream()和parallelStream()方法生成一个Stream或ParallelStream流: List<String> list = Arrays.asList("…

    Java 2023年5月26日
    00
  • 关于spring版本与JDK版本不兼容的问题及解决方法

    关于Spring版本与JDK版本不兼容的问题及解决方法 在使用Spring框架进行Java开发时,我们可能会遇到版本不兼容的问题。最常见的问题是Spring版本与JDK版本不兼容,这会导致应用程序无法正常运行。下面是一些关于如何解决Spring版本与JDK版本不兼容问题的建议。 JDK和Spring版本兼容性矩阵 Spring框架的不同版本有不同的JDK版本…

    Java 2023年5月19日
    00
  • Java 超详细讲解对象的构造及初始化

    首先需要明确的是,对象的构造和初始化是面向对象编程中非常重要的概念,它影响着对象的生命周期和对象各个属性的默认值。 什么是构造函数 在Java中,每个类都有一个构造函数,它是一个特殊的方法,用于实例化对象时被调用,构造函数通常用于初始化对象的属性,并确保对象在被实例化后能够正常使用。 在Java中,构造函数的名字与类名相同,没有返回值,可以像方法一样拥有参数…

    Java 2023年5月26日
    00
  • Java中Exception和Error的区别详解

    Java中Exception和Error的区别详解 在Java中,Exception和Error是两种不同的异常类型,它们的发生和处理方式是不同的。本文将详细讲解Exception和Error的区别及其在程序开发中的应用。 异常的分类 在Java中,异常可以分为两种:受检异常和非受检异常(也称为运行时异常)。 受检异常 受检异常是指在程序运行期间可能出现的异…

    Java 2023年5月27日
    00
  • 微信小程序 开发中遇到问题总结

    微信小程序开发中遇到问题总结 问题1:如何进行页面跳转? 在小程序的开发过程中,我们经常需要从一个页面跳转到另一个页面。这时候,我们可以使用wx.navigateTo和wx.redirectTo这两个API来实现。wx.navigateTo会保留当前页面,而wx.redirectTo则会关闭当前页面并跳转到目标页面。 示例代码如下: // pages/ind…

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