浅谈MyBatis-plus入门使用

yizhihongxing

浅谈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日

相关文章

  • Java Mybatis框架Dao层的实现与映射文件以及核心配置文件详解分析

    Java Mybatis是一个优秀的持久层框架,它结合了Java和SQL,解决了面向对象编程中关系数据库的持久化问题。在Java Mybatis中,Dao层是一个非常重要的组成部分,它是应用程序和数据库之间的中间层,主要用于数据访问的封装和管理,而映射文件则用于将SQL语句与Dao层的方法进行映射,核心配置文件则用于对Java Mybatis框架进行配置和管…

    Java 2023年5月20日
    00
  • 关于mysql时间区间问题浅析

    下面是关于“关于mysql时间区间问题浅析”的完整攻略。 1. 问题的提出 在mysql中处理时间区间问题常常会遇到一些困难,例如当需要查询最近一周、一个月或一年的数据时,应该如何正确的处理时间范围? 2. 解决方法 2.1 使用范围查询 查询一天内的数据可以用如下语句: SELECT * FROM table_name WHERE create_time …

    Java 2023年5月20日
    00
  • 实例讲解Java的Spring框架中的AOP实现

    实例讲解Java的Spring框架中的AOP实现 什么是AOP? AOP(Aspect-oriented programming)面向切面编程,是一种新的编程思想,它通过定义切面(Aspect)来装配系统,一个切面横切整个系统中的多个点,切面可以通过切点(PointCut)和通知(Advice)来定义在何处以及何时执行程序代码,从而达到复用和降低系统复杂度的…

    Java 2023年5月19日
    00
  • Spring boot监控Actuator-Admin实现过程详解

    Spring Boot监控Actuator-Admin实现过程详解 Spring Boot Actuator是Spring Boot提供的一个用于监控和管理应用程序的框架。Actuator提供了许多有用的端点,例如/health、/metrics、/info等。Actuator-Admin是一个基于Actuator的UI,它提供了一个可视化的界面,用于监控和…

    Java 2023年5月15日
    00
  • Spring-boot 2.3.x源码基于Gradle编译过程详解

    下面我会详细讲解“Spring-boot 2.3.x源码基于Gradle编译过程详解”的攻略。 标题 Spring-boot 2.3.x源码基于Gradle编译过程详解 代码块 在markdown中,我们可以使用代码块来展示代码,格式如下: Your code goes here 或者指定代码块的语言,格式如下: Your code goes here 正文…

    Java 2023年5月26日
    00
  • Java Apache Commons报错“InterruptedIOException”的原因与解决方法

    当使用Java的Struts框架时,可能会遇到“ActionServletMappingException”错误。这个错误通常由以下原因之一起: ActionServlet配置错误:如果ActionServlet配置错误,则可能会出现此错误。在这种情况下,需要检查ActionServlet配置以解决此问题。 ActionServlet无效:如果ActionS…

    Java 2023年5月5日
    00
  • 在Flash中实现物体运动的三种方法介绍(AS)

    当使用Flash软件制作动画或游戏时,需要使用一些方法来实现物体的运动效果。在ActionScript编程中,也可以使用一些代码来实现物体的移动,以下是三种常用的方法: 一、基于坐标移动 这种方法是指直接修改物体的坐标值,实现物体的移动。以AS3为例,在代码中可以使用如下方法: object.x = object.x + 10; // 将物体沿着 x 轴正方…

    Java 2023年6月15日
    00
  • Springboot插件开发实战分享

    SpringBoot插件开发实战分享 SpringBoot插件是一种可扩展的机制,可以帮助我们扩展SpringBoot的功能。本文将详细讲解SpringBoot插件开发的完整攻略,并提供两个示例。 1. 创建SpringBoot插件 在SpringBoot中,我们可以使用Maven或Gradle来创建SpringBoot插件。以下是一个简单的Maven插件示…

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