首页 > 其他分享 >MyBatis-Plus学习

MyBatis-Plus学习

时间:2023-06-16 10:22:56浏览次数:37  
标签:数据库 boot 学习 mybatis Plus mysql MyBatis com

一、MyBatis-Plus简介

1、简介

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 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 的数据库,具体支持情况如下:

  • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks, csiidb,informix,TDengine,redshift
  • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库

4、框架结构

5、代码及文档地址

二、入门案例

1、开发环境

IDE:idea 2023.1.1
JDK:JDK8+
构建工具:maven 3.3.9
MySQL版本:MySQL 8.0.26
Spring Boot:3.1.0
MyBatis-Plus:3.5.1

2、创建数据库及表

  • 创建表
    CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
    use `mybatis_plus`;
    CREATE TABLE `user` (
    `id` bigint(20) NOT NULL COMMENT '主键ID',
    `name` varchar(30) DEFAULT NULL COMMENT '姓名',
    `age` int(11) DEFAULT NULL COMMENT '年龄',
    `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 添加数据
    INSERT INTO user (id, name, age, email)
    VALUES
    (1, 'Jone', 18, '[email protected]'),
    (2, 'Jack', 20, '[email protected]'),
    (3, 'Tom', 28, '[email protected]'),
    (4, 'Sandy', 21, '[email protected]'),
    (5, 'Billie', 24, '[email protected]');

3、创建Spring Boot工程

  • 初始化工程
    • 使用 Spring Initializr 快速初始化一个 Spring Boot 工程
    • 选择next后,选择Spring Boot版本
  • 引入依赖
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>3.1.0</version>
            <scope>test</scope>
        </dependency>

        <!--mybatis-plus启动器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

        <!--lombok用于简化实体类开发-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

4、编写代码

  • 1.配置application.yml
spring:
  # 配置数据源信息
  datasource:
    # 配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    # 配置连接数据库的各个信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  # 设置MyBatis-Plus的全局配置
  global-config:
    db-config:
      # 设置实体类所对应的表的统一前缀
      table-prefix: t_
      # 设置统一的主键生成策略
      id-type: auto
  # 配置类型别名所对应的包
  type-aliases-package: com.sty.mybatisplus.pojo
  # 扫描通用枚举的包
  type-enums-package: com.sty.mybatisplus.enums

注意:

  • 驱动类driver-class-name,配置不对,运行测试用例的时候会有 WARN 信息

    • spring boot 2.0(内置jdbc5驱动),驱动类使用:
      • driver-class-name: com.mysql.jdbc.Driver
    • spring boot 2.1及以上(内置jdbc8驱动),驱动类使用:
      • driver-class-name: com.mysql.cj.jdbc.Driver
  • 连接地址url,配置不对,运行测试用例会报错

    • MySQL5.7版本的url:
      • jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
    • MySQL8.0版本的url:
      • jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
  • 2.启动类

标签:数据库,boot,学习,mybatis,Plus,mysql,MyBatis,com
From: https://www.cnblogs.com/styCy/p/17484921.html

相关文章

  • 时间序列异常检测:统计和机器学习方法介绍
    理解时间序列数据在深入研究异常检测技术之前,先简单介绍时间序列数据的特征。时间序列数据通常具有以下属性:趋势:数据值随时间的长期增加或减少。季节性:以固定间隔重复的模式或循环。自相关:当前观测值与先前观测值之间的相关性。噪声:数据中的随机波动或不规则。让我们......
  • File I/O学习总结
    1.File文件的增删查(1)增publicvoidaddFile(Filefile){file.createNewFile();}(2)删publicvoiddeleteFile(Filefile){file.delete();}(3)查publicvoidfindFile(Filefile){file.getName();file.getAbsolutePath();}2.流的指向(1)读入【文件读入到......
  • 国产MCU-CW32F030开发学习--按键检测
    国产MCU-CW32F030开发学习--按键检测bsp_key按键驱动程序用于扫描独立按键,具有软件滤波机制,采用FIFO机制保存键值。可以检测如下事件:按键按下。按键弹起。长按键。长按时自动连发。我们将按键驱动分为两个部分来介绍,一部分是FIFO的实现,一部分是按键检测的实现......
  • 文本分类与情感分析:基于深度学习的大型语言模型应用
    目录1.引言2.技术原理及概念3.实现步骤与流程4.示例与应用5.优化与改进6.结论与展望7.附录:常见问题与解答文本分类和情感分析是人工智能领域中非常重要的技术,其应用广泛,包括自然语言处理、语音识别、计算机视觉等多个领域。本文将介绍基于深度学习的大型语言模型应用文本......
  • 深度学习神经网络大模型在文本分类中的应用
    目录1.引言2.技术原理及概念2.1基本概念解释2.2技术原理介绍2.3相关技术比较3.实现步骤与流程3.1准备工作:环境配置与依赖安装3.2核心模块实现3.3集成与测试4.示例与应用4.1实例分析4.2应用场景介绍5.优化与改进5.1性能优化5.2可扩展性改进5.3安全性加固深度学习......
  • Vue项目入门实战(07)-想让你的Vue页面更炫酷?来学习样式绑定吧
    1class的对象绑定1.1需求现在要实现点击div区域里的helloworld文本时,文本变成红色。1.2实现<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Vue中的样式绑定</title><scriptsrc="../vue.js&q......
  • Django学习笔记
    1、安装djangopipinstall-Udjango#安装django 2、创建django工程、启动工程创建项目django-adminstartprojectdjango_test #安装完django后会有django-admin命令#django_test是项目名称,创建项目时修改为自己的项目名称即可启动项目项目创建完成后,会在执行命令......
  • javaScript语言学习指南
    简介关于JavaScript的入门学习教程,网上通常会推荐以下书籍:《JavaScript权威指南》(其中涵盖语言核心部分和浏览器客户端编程,比较系统和全面,个人比较推荐,电子版下载(中文版),英文版)《JavaScript高级程序设计》(作为参考书与《JavaScript权威指南》一起参考阅读还不错,电子版下载)《......
  • PMP学习笔记(四)
      敏捷实践指南预习  《敏捷实践指南》关注项目,解决项目生命周期选择、实施敏捷方法和组织对敏捷项目的考虑因素。  传统预测法旨在预先确定大部分需求,并通过变更请求过程控制变更,而敏捷方法的出现是为了在短时间内探讨可行性,根据评估和反馈快速调整。  一般而言,......
  • 学习爬虫入门2,count反爬虫思路
    浏览网页的过程1.输入网址2.浏览器向DNS服务商发起请求3.找到对应服务器4.服务器解析请求5.服务器处理最终请求发回去6.浏览器解析返回数据7.展示给用户爬虫策略广度优先  深度优先  聚焦爬虫BFS从根节点开始沿着树的宽度深度优先DFS尽可能深的搜索树的分支......