MybatisPlus快速入门

一、概述

1、简介

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,

在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2、特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

3、支持数据库

任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift

达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库

  1. 框架结构

  • 前置要求
  1. 准备数据库

CREATE TABLE user(

    id BIGINT(20) NOT NULL COMMENT '主键ID',

    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',

    age INT(11) NULL DEFAULT NULL COMMENT '年龄',

    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',

    PRIMARY KEY (id));

INSERT INTO user (id, name, age, email) VALUES(1, 'Jone', 18, 'test1@baomidou.com'),(2, 'Jack', 20, 'test2@baomidou.com'),(3, 'Tom', 28, 'test3@baomidou.com'),(4, 'Sandy', 21, 'test4@baomidou.com'),(5, 'Billie', 24, 'test5@baomidou.com');

  1. SpringBoot项目
  1. pom文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.7.12-SNAPSHOT</version>

        <relativePath/> <!-- lookup parent from repository -->

    </parent>

    <groupId>com.example</groupId>

    <artifactId>mybatisplus</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <name>mybatisplus</name>

    <description>mybatisplus</description>

    <properties>

        <java.version>1.8</java.version>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

            <groupId>com.baomidou</groupId>

            <artifactId>mybatis-plus-generator</artifactId>

            <version>3.5.2</version>

        </dependency>

        <dependency>

            <groupId>org.freemarker</groupId>

            <artifactId>freemarker</artifactId>

        </dependency>

        <dependency>

            <groupId>com.mysql</groupId>

            <artifactId>mysql-connector-j</artifactId>

            <scope>runtime</scope>

        </dependency>

        <dependency>

            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <optional>true</optional>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>com.baomidou</groupId>

            <artifactId>mybatis-plus-boot-starter</artifactId>

            <version>3.5.2</version>

        </dependency>

    </dependencies>

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <configuration>

                    <excludes>

                        <exclude>

                            <groupId>org.projectlombok</groupId>

                            <artifactId>lombok</artifactId>

                        </exclude>

                    </excludes>

                </configuration>

            </plugin>

        </plugins>

    </build>

    <repositories>

        <repository>

            <id>spring-milestones</id>

            <name>Spring Milestones</name>

            <url>https://repo.spring.io/milestone</url>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </repository>

        <repository>

            <id>spring-snapshots</id>

            <name>Spring Snapshots</name>

            <url>https://repo.spring.io/snapshot</url>

            <releases>

                <enabled>false</enabled>

            </releases>

        </repository>

    </repositories>

    <pluginRepositories>

        <pluginRepository>

            <id>spring-milestones</id>

            <name>Spring Milestones</name>

            <url>https://repo.spring.io/milestone</url>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </pluginRepository>

        <pluginRepository>

            <id>spring-snapshots</id>

            <name>Spring Snapshots</name>

            <url>https://repo.spring.io/snapshot</url>

            <releases>

                <enabled>false</enabled>

            </releases>

        </pluginRepository>

    </pluginRepositories>

</project>

  1. yml文件

spring:

  datasource:

    username: root

    password: 123456

    url: jdbc:mysql:///mpdb

logging:

  level:

    com.example.mytabisplus: debug

mybatis-plus:

  global-config:

    db-config:

      logic-delete-field: deleted

      logic-not-delete-value: 0

      logic-delete-value: 1

  1. 实体类

@Data

@AllArgsConstructor

@NoArgsConstructor

@TableName("xxx_user_info")

public class User implements Serializable {

    @TableId(type = IdType.AUTO)

    private Long id;

    private String name;

    private Integer age;

    @TableField(exist = false)

    private String email;

    //@TableLogic 已经进行全局逻辑删除配置,故不用注解

    private Integer deleted;

    //@Version

    private Integer version;

    private Integer balance;

}

  1. Mapper

@Mapper

public interface UserMapper extends BaseMapper<User> {

}

  1. 测试

@SpringBootTest

public class Test {

    @Autowired

    UserMapper userMapper;

    @org.junit.jupiter.api.Test

    public void testMpdb(){

        List<User> users=userMapper.selectList(null);

        users.forEach(System.out::println);

    }

}

  • 注解

1、@TableName(opens new window)

  • 描述:表名注解,标识实体类对应的表
  • 使用位置:实体类

2、@TableId(opens new window)

  • 描述:主键注解
  • 使用位置:实体类主键字段

3、@TableLogic(opens new window)

  • 描述:表字段逻辑处理注解(逻辑删除)

4、@Version(opens new window)

  • 描述:乐观锁注解、标记 @Version 在字段上

四、查询

1、分页查询

1.设置分页拦截器

 

  1. 查询前设置分页参数

1、条件构造器

1.常规使用

2.推荐使用

五、代码生成器

1、pom

        <dependency>

            <groupId>com.baomidou</groupId>

            <artifactId>mybatis-plus-generator</artifactId>

            <version>3.5.2</version>

        </dependency>

        <dependency>

            <groupId>org.freemarker</groupId>

            <artifactId>freemarker</artifactId>

        </dependency>

2、Java

FastAutoGenerator.create("jdbc:mysql:///mpdb", "root", "123456")

                .globalConfig(builder -> {

                    builder.author("RuiXiao") // 设置作者

                            //.enableSwagger() // 开启 swagger 模式

                            //.fileOverride() // 覆盖已生成文件

                            .outputDir("F:\\不动产登记系统\\mybatisplus\\src\\main\\java"); // 指定输出目录

                })

                .packageConfig(builder -> {

                    builder.parent("com.example.mybatisplus") // 设置父包名

                            .moduleName("user") // 设置父包模块名

                            .pathInfo(Collections.singletonMap(OutputFile.xml, "F:\\不动产登记系统\\mybatisplus\\src\\main\\resources\\mapper\\user" )); // 设置mapperXml生成路径

                })

                .strategyConfig(builder -> {

                    builder.addInclude("xxx_user_info,xxx_dept_info") // 设置需要生成的表名

                            .addTablePrefix("xxx_"); // 设置过滤表前缀

                })

                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板

                .execute();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值