首页 > 其他分享 >MyBatis-Plus基本操作使用

MyBatis-Plus基本操作使用

时间:2022-09-27 16:58:17浏览次数:89  
标签:DEFAULT 配置 private Plus import MyBatis 基本操作 com 主键

参考:https://www.cnblogs.com/l-y-h/p/12859477.html#_label0

官方文档:https://mp.baomidou.com/

一)简单了解

1、简介:

MyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2、特性:

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

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

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

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

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

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

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

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

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

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

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

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

 

二)使用SpringBoot快速创建一个项目融合MyBatis-Plus;

1、创建SpringBoot项目;

点击next,最后finish,创建完成;

2、添加MyBatis-Plus依赖;

 

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

3、创建一个表用于接下来的工作;

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `pwd` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

4、配置数据源信息;

application.properties文件;(如果在创建项目之前就加入了相关的依赖,下面的配置信息会自动生成,只需要改几个自己的数据库参数即可;)

# 应用名称
spring.application.name=mybatis-plus-study
# 应用服务 WEB 访问端口
server.port=8085
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=mybatis-plus
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?serverTimezone=UTC&useUnicode=true
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=123456

#输出日志 --查看执行的语句
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

5、为了方便查看数据,可以在IDEA中打开数据库连接;

 6、编写实体类;

package com.example.mybatisplusstudy.entity;

import lombok.Data;

@Data
public class User {

    private Integer id;
    private String name;
    private String pwd;
    private String address;
    private String phone;
}

要使用@Data注解必须要在IDEA中安装lombok插件,点击setting,选择plugins,搜索lombok安装即可,其次还要导入lombok依赖才可使用;

 7、编写操作实体类的 Mapper 类。

 

package com.example.mybatisplusstudy.mapper;

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


@Mapper //这个注解由于我在启动类中用的不是@MapperScan,所以必须加上,@Mapper注解的接口生成一个实现类,可以省去xml的编写
public interface UserMapper extends BaseMapper<User> {

}

 继承的BaseMapper里封装了基本的CURD方法,直接使用即可;

 

8、在启动类添加注解,扫描Mapper类;

package com.example.mybatisplusstudy;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;


@ComponentScan(basePackages = {"com.example"})
@SpringBootApplication
public class MybatisPlusStudyApplication {

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

}

9、测试结果:

package com.example.mybatisplusstudy;

import com.example.mybatisplusstudy.entity.User;
import com.example.mybatisplusstudy.mapper.UserMapper;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class MybatisPlusStudyApplicationTests {

    @Autowired
    private UserMapper userMapper;
    @Test
    public void test(){
        List<User> users = userMapper.selectList(null);
        for(Object u : users){
            System.out.println(u);
        }
    }

}

 

三)MyBatis-Plus整合SpringBoot;

1、代码生成器(AutoGenerator )简介:

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

2、添加相关依赖;

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- 添加 模板引擎依赖 (默认)-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>

 3、代码生成器代码:

package com.example.mybatisplusstudy;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
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.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;

public class AutoGeneratorConfig {

    @Test
    public void autoGenerate() {
        // Step1:代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // Step2:全局配置
        GlobalConfig gc = new GlobalConfig();
        // 填写代码生成的目录(需要修改),此处是你创建项目的地址
        String projectPath = "E:\\代码\\SpringBoot\\mybatis-plus-study";
        // 拼接出代码最终输出的目录
        gc.setOutputDir(projectPath + "/src/main/java");
        // 配置开发者信息(可选)(需要修改)
        gc.setAuthor("xx");
        // 配置是否打开目录,false 为不打开(可选)
        gc.setOpen(false);
        // 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选)
        //gc.setSwagger2(true);
        // 重新生成文件时是否覆盖,false 表示不覆盖(可选)
        gc.setFileOverride(false);
        // 配置主键生成策略,此处为 ASSIGN_ID(可选)
        gc.setIdType(IdType.ASSIGN_ID);
        // 配置日期类型,此处为 ONLY_DATE(可选)
        gc.setDateType(DateType.ONLY_DATE);
        // 默认生成的 service 会有 I 前缀
        gc.setServiceName("%sService");
        mpg.setGlobalConfig(gc);

        // Step3:数据源配置(需要修改)
        DataSourceConfig dsc = new DataSourceConfig();
        // 配置数据库 url 地址
        dsc.setUrl("jdbc:mysql://localhost:3306/mybatis-plus?serverTimezone=UTC&useUnicode=true");
        // dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定数据库名
        // 配置数据库驱动
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        // 配置数据库连接用户名
        dsc.setUsername("root");
        // 配置数据库连接密码
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // Step:4:包配置
        PackageConfig pc = new PackageConfig();
        // 配置父包名(需要修改)
        pc.setParent("com.example");
        // 配置模块名(需要修改)
        pc.setModuleName("mybatisplusstudy");
        // 配置 entity 包名
        pc.setEntity("entity");
        // 配置 mapper 包名
        pc.setMapper("mapper");
        // 配置 service 包名
        pc.setService("service");
        // 配置 controller 包名
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // Step5:策略配置(数据库表配置)
        StrategyConfig strategy = new StrategyConfig();
        // 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改)
        strategy.setInclude("qyjbxx");
        // 配置数据表与实体类名之间映射的策略
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 配置数据表的字段与实体类的属性名之间映射的策略
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 配置 lombok 模式
        strategy.setEntityLombokModel(true);
        // 配置 rest 风格的控制器(@RestController)
        strategy.setRestControllerStyle(true);
        // 配置驼峰转连字符
        strategy.setControllerMappingHyphenStyle(true);
        // 配置表前缀,生成实体时去除表前缀
        // 此处的表名为 test_mybatis_plus_user,模块名为 test_mybatis_plus,去除前缀后剩下为 user。
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);

        // Step6:执行代码生成操作
        mpg.execute();
    }
}

 4、执行@Test方法,生成相关代码;

 5、查看结果;自动生成代码已完成;

 qyjbxx建表语句:

CREATE TABLE `qyjbxx` (
  `qyjbxxid` int NOT NULL COMMENT '企业ID',
  `qymc` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '企业名称',
  `qyxz` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '企业性质',
  `qydz` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '企业地址',
  `qyhfr` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '企业和法人',
  `qylxrdhhm` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '企业联系人电话号码',
  `createtime` datetime DEFAULT NULL COMMENT '创建时间',
  `updatetime` datetime DEFAULT NULL COMMENT '修改时间',
  `version` int DEFAULT '1' COMMENT '版本号(乐观锁,默认为1)',
  `yxx` int DEFAULT '0' COMMENT '有效性(用于逻辑删除,0:有效;1:无效)',
  PRIMARY KEY (`qyjbxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

四)注解:

1、MyBatis-Plus常用注解:

【@TableName 】
    @TableName               用于定义表名
注:
    常用属性:
        value                用于定义表名

【@TableId】
    @TableId                 用于定义表的主键
注:
    常用属性:
        value           用于定义主键字段名
        type            用于定义主键类型(主键策略 IdType)

   主键策略:
      IdType.AUTO          主键自增,系统分配,不需要手动输入
      IdType.NONE          未设置主键
      IdType.INPUT         需要自己输入 主键值。
      IdType.ASSIGN_ID     系统分配 ID,用于数值型数据(Long,对应 mysql 中 BIGINT 类型)。
      IdType.ASSIGN_UUID   系统分配 UUID,用于字符串型数据(String,对应 mysql 中 varchar(32) 类型)。

【@TableField】  
    @TableField            用于定义表的非主键字段。
注:
    常用属性:
        value                用于定义非主键字段名
        exist                用于指明是否为数据表的字段, true 表示是,false 为不是。
        fill                 用于指定字段填充策略(FieldFill)。
        
    字段填充策略:(一般用于填充 创建时间、修改时间等字段)
        FieldFill.DEFAULT         默认不填充
        FieldFill.INSERT          插入时填充
        FieldFill.UPDATE          更新时填充
        FieldFill.INSERT_UPDATE   插入、更新时填充。

【@TableLogic】
    @TableLogic           用于定义表的字段进行逻辑删除(非物理删除)
注:
    常用属性:
        value            用于定义未删除时字段的值
        delval           用于定义删除时字段的值
        
【@Version】
    @Version             用于字段实现乐观锁

 常用注解简单应用:

package com.example.mybatisplusstudy.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.File;
import java.util.Date;

import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author xx
 * @since 2021-06-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class Qyjbxx implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 企业ID
     */
    @TableId(value = "qyjbxxid", type = IdType.ASSIGN_ID)
    private Integer qyjbxxid;

    /**
     * 企业名称
     */
    private String qymc;

    /**
     * 企业性质
     */
    private String qyxz;

    /**
     * 企业地址
     */
    private String qydz;

    /**
     * 企业和法人
     */
    private String qyhfr;

    /**
     * 企业联系人电话号码
     */
    private String qylxrdhhm;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createtime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date updatetime;

    /**
     * 有效性 o:有效   1:无效
     * @TableLogic 定义逻辑删除功能,不是真删除,数据还在,只是改变状态
     */
    @TableLogic(value = "0" ,delval = "1")
    @TableField(fill = FieldFill.INSERT)
    private Integer yxx;

    /**
     * 版本号(用于乐观锁,默认为1)
     */
    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;


 

标签:DEFAULT,配置,private,Plus,import,MyBatis,基本操作,com,主键
From: https://www.cnblogs.com/chenTo/p/16735095.html

相关文章

  • mybatisPlus逆向生成工具类CodeGenerator (生成pojo、controller、service等)
    importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.Da......
  • 栈的基本操作
    栈的顺序存储结构顺序栈的实现#include"iostream"#defineMaxSize50//栈的结构体structStack{intdata[MaxSize];inttop;}stack;//初始化栈voi......
  • SQL server 基本操作
     1、添加字段altertable表名add字段名typenotnulldefault02、修改字段名altertable表名 rename columnAtoB3、修改字段类型altertable表名modif......
  • MybatisPlus学习之MyBatisX插件比代码生成器还好用的哦2
    概述  https://blog.csdn.net/qq_39746820/article/details/124339612MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率但是在真正开发过程中,M......
  • mybatisplus 代码生成器
    pom.xml<!--mybitsplus启动器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</......
  • MybatisPlus学习之MyBatisX插件比代码生成器还好用的哦
    一、MyBatisX的作用:1.xml跳转2.生成代码3.重置代码4.JAP提示跟代码生成器比较:代码生成器生成文件还有controller等文件,而mybatsx没有三、如何使用:1.安装MyBatisX:安装方......
  • SpringBoot+Mybatis-Plus 数据表字段是关键字的问题解决
    如果字段名是关键字,用mybatisplus时会报以下错误:badSQLgrammar[];nestedexceptionisjava.sql.BatchUpdateException:ORA-01747:user.table.column,table.column......
  • MyBatis的逆向工程
    正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:Java实体类......
  • MyBatis的缓存
    1、MyBatis的一级缓存一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问使一级缓存失......
  • SpringBoot 引入 Mybatis plus 及 Mybatis-plus-generator 代码自动生成工具
    简介MyBatis-Plus(opensnewwindow)(简称MP)是一个MyBatis(opensnewwindow)的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。Mybatispl......