栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis Plus快速入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis Plus快速入门

目录

一、Mybatis Plus的基本使用

1. 什么是mybatis-plus

2、mybatis-plus特性

支持数据库

3、框架结构

 二、Mybatis Plus的基本代码操作

1、新建springboot项目

2、创建数据库 mybatis_plus

3、 导入相应的pom依赖

4、配置

 5、编写实体类 User.java(此处使用了 Lombok 简化代码)

6、编写Mapper类 UserMapper.java

 7、在启动类加上注解扫描mapper


一、Mybatis Plus的基本使用

1. 什么是mybatis-plus

升级版的mybatis,目的是让mybatis更易于使用, 用官方的话说“为简化而生”  

官网:MyBatis-Plus

2、mybatis-plus特性

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

支持数据库

mysql 、 mariadb 、 oracle 、 db2 、 h2 、 hsql 、 sqlite 、 postgresql 、 sqlserver达梦数据库 、 虚谷数据库 、 人大金仓数据库

3、框架结构

 二、Mybatis Plus的基本代码操作

1、新建springboot项目

2、创建数据库 mybatis_plus

现有一张 User 表,其表结构如下:

idnameageemail
1Jone18test1@baomidou.com
2Jack20test2@baomidou.com
3Tom28test3@baomidou.com
4Sandy21test4@baomidou.com
5Billie24test5@baomidou.com

其对应的数据库 Schema 脚本如下:

DROP TABLE IF EXISTS user;

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)
);
-- 真实开发中,version(乐观锁),deleted(逻辑删除)、gmt_create、gem_mo

 其对应的数据库 Data 脚本如下:

DELETE FROM user;

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');

3、 导入相应的pom依赖

            com.baomidou
            mybatis-plus-boot-starter
            3.5.1
        
        
            mysql
            mysql-connector-java
        
        
        
            io.springfox
            springfox-swagger2
            2.9.2
        
        
        
            io.springfox
            springfox-swagger-ui
            2.9.2
        

            org.springframework.boot
            spring-boot-starter-freemarker
        

4、配置

在 application.yml 配置文件中添加 H2 数据库的相关配置:

server:
  port: 8080
spring:
  application:
    name: plus
  datasource:
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
logging:
  level: 
    com.example.plus.mapper: debug  

 5、编写实体类 User.java(此处使用了 Lombok 简化代码)

​ pojo–>dao–>(连接mybatis,配置mapper.xml文件)–>service-controller (传统方式 )

package com.zxy.plus.pojo;
 
import lombok.Data;
 
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

6、编写Mapper类 UserMapper.java

注意继承的是baseMapper

package com.zxy.plus.mapper;
 
import com.baomidou.mybatisplus.core.mapper.baseMapper;
import com.zxy.plus.pojo.User;
import org.springframework.stereotype.Repository;
 
@Repository
public interface UserMapper extends baseMapper {
 //所有的CRUD已经编写完成
    //不需要像以前的配置一些xml
 
}

 7、在启动类加上注解扫描mapper

 在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

@SpringBootApplication
@MapperScan("com.zxy.plus.mapper")//扫描mapper文件夹
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }

}
三、Java8代码解析 1、代码生成器(新)

mybatis plus生成配置文件

①、导入依赖

当前包未传递依赖 MP 包,需要自己引入!


    com.baomidou
    mybatis-plus-generator
    3.5.2
②、新建自动生成器MysqlGenerator
package com.zxy.plus.generator;
 
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import lombok.extern.slf4j.Slf4j;
 
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
 
@Slf4j
public class MysqlGenerator {
 
    
    protected static String URL = "jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
    protected static String USERNAME = "root";
    protected static String PASSWORD = "123456";
 
    protected static DataSourceConfig.Builder DATA_SOURCE_ConFIG = new DataSourceConfig.Builder(URL, USERNAME, PASSWORD);
 
    // 处理 all 情况
    
    protected static List getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
 
    public static void main(String[] args) {
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
//                全局配置
                .globalConfig((scanner,builder) ->
//                    builder就是globalConfig的构建器
                    builder.fileOverride() //覆盖已生成文件
                            .outputDir(System.getProperty("user.dir")+"\src\main\java")
                            .author(scanner.apply("请输入你的用户名"))
                            .enableSwagger()
                            .commentDate("yyyy-MM-dd")
                            .build() //构建器开始工作
 
                )
//                包配置
                .packageConfig(builder-> {
                    builder
                            .parent("com.lv.plus")
                            .entity("pojo")
                            .service("service")
                            .serviceImpl("service.impl")
                            .mapper("mapper")
                            .xml("mapper.xml")
                            .controller("controller")
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\src\main\resources\mapper"))
                            .build();
                })
//                注入配置
                .injectionConfig((builder) ->
                        builder.beforeOutputFile(
                                (a, b) -> log.warn("tableInfo: " + a.getEntityName())
                        )
                )
//                策略配置
                .strategyConfig((scanner, builder) ->
                        builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
                                .addTablePrefix("tb_")
                                .entityBuilder()
                                .enableChainModel()
                                .enableLombok()
                                .enableTableFieldAnnotation()
                                .addTableFills(
                                        new Column("create_time", FieldFill.INSERT)
                                )
                                .controllerBuilder()
                                .enableRestStyle()
                                .enableHyphenStyle()
                                .build())
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
 
}

基础配置:

 

 

未完待续~~~~~~~~~~~~~~·

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768944.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号