首页 > 其他分享 >Mybatis-Plus 简介及入门案例

Mybatis-Plus 简介及入门案例

时间:2023-05-07 18:00:15浏览次数:46  
标签:入门 age email baomidou Mybatis Plus com id name

Mybatis 简介

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

官网地址:https://www.baomidou.com/

特性

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

框架结构

image-20230507162037547

入门案例

开发环境:

IDE:idea 2019.2

JDK:JDK8+

构建工具:maven 3.5.4

MySQL版本:MySQL 5.7

Spring Boot:2.6.3

MyBatis-Plus:3.5.1

1.数据准备

创建数据库和表:

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

2.创建SpringBoot工程

新建一个SpringBoot项目

参考:https://www.cnblogs.com/1963942081zzx/p/16822812.html

添加依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>test</scope>
</dependency>

ider 安装 Lombok插件

Lombok插件简化实体类开发

image-20230507174333493

3.编码

配置application.yml

spring:
  # 配置数据源信息
  datasource:
    # 配置数据源类型
    type: com.zaxxer.hikari.HikariDataSource
    # 配置连接数据库信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
    username: root
    password: root

注意

1、驱动类driver-class-name

​ 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 否则运行测试用例的时候会有 WARN 信息

2、连接地址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 否则运行测试用例报告如下错误: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more

启动类

在Spring Boot启动类中添加@MapperScan注解,扫描Mapper接口所在的包

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

添加实体类

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

添加mapper

BaseMapper是MyBatis-Plus提供的模板mapper,其中包含了基本的CRUD方法,泛型为操作的 实体类型

//@Repository 避免单元测试时编辑器找不到注入对象报错,实际可以不加
@Repository
public interface UserMapper extends BaseMapper<User> {
}

测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisPlusTest {

    @Resource
    private UserMapper userMapper;

    @Test
    public void test1() {
        List<User> users = this.userMapper.selectList(null);
        users.forEach(System.out::println);
    }
}

结果:

User(id=1, name=Jone, age=18, [email protected])
User(id=2, name=Jack, age=20, [email protected])
User(id=3, name=Tom, age=28, [email protected])
User(id=4, name=Sandy, age=21, [email protected])
User(id=5, name=Billie, age=24, [email protected])

添加日志

在application.yml中配置日志输出

# 配置MyBatis日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

日志输出

> Preparing: SELECT id,name,age,email FROM user
> Parameters:
<
Columns: id, name, age, email
<
Row: 1, Jone, 18, [email protected]
<== Row: 2, Jack, 20, [email protected]
<== Row: 3, Tom, 28, [email protected]
<== Row: 4, Sandy, 21, [email protected]
<== Row: 5, Billie, 24, [email protected]
<== Total: 5

标签:入门,age,email,baomidou,Mybatis,Plus,com,id,name
From: https://www.cnblogs.com/1963942081zzx/p/17379700.html

相关文章

  • 在线excel:LuckySheet 入门
    Luckysheet,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 文档地址:https://dream-num.github.io/LuckysheetDocs/zh/做一个页面编辑然后保存进数据库。另一个页面把前一个页面的内容展示出来。第一个页面,<!DOCTYPEhtml><html><headlang='zh'><met......
  • Vue2入门之超详细教程九-监视属性
    1、简介监视属性watch:1.当被监视的属性变化时,回调函数自动调用,进行相关操作2.监视的属性必须存在,才能进行监视!!3.监视的两种写法:(1) newVue时传入watch配置(2) 通过vm.$watch监视深度监测:(1) Vue中的......
  • IoC入门案例
    跟着黑马,简单写一个小的测试程序,学习一下IoC第一步,导入Spring的坐标Spring-context,对应的版本是2.1.10.RELEASE黑马刚开篇讲的是,springframework,需要用到这个maven依赖<dependency><groupId>org.springframework</groupId><artifactId>spring-conte......
  • 在vue3中使用elementPlus的el-select时样式穿透问题
    下拉框的option样式只能在全局样式里改,千万不能用scope,否则不生效<el-selectclass="select":popper-append-to-body="false"v-model="selectValue"placeholder="请选择"popper-class="select-option"><......
  • springboot集成下,mybatis的mapper代理对象究竟是如何生成的
    springboot集成下,mybatis的mapper代理对象究竟是如何生成的 前情回顾Mybatis源码解析-mapper代理对象的生成,你有想过吗,我们讲到了mybatis操作数据库的流程:先创建SqlSessionFactory,然后创建SqlSession,然后再创建获取mapper代理对象,最后利用mapper代理对象完成数据库......
  • MyBatis-02CRUD操作及配置解析01
    上集回顾:第一个程序namespace将上面案例中的UserMapper接口改名为UserDao;将UserMapper.xml中的namespace改为为UserDao的路径.再次测试结论:配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!1CRUD操作及配置解析1.1selectselect标......
  • 【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)
    标签:#Prompt#LLM创建时间:2023-04-2817:05:45链接:课程(含JupyterNotebook),中文版讲师:AndrewNg,IsaFulford阅读提示这是一篇入门的教程,入门的意思是指大部分内容,可能你都已经知道了,但是知道不等于掌握,Prompt是一门实践经验主义科学,LLM是个黑盒,你只要不断去“实践”才能......
  • Nginx 入门实战(3)--Nginx 常用配置参数说明
    Nginx中包含众多的参数,这些参数影响Nginx的行为;本文主要介绍一些常用的参数。1、Nginx配置文件基本结构Nginx的配置文件为conf/nginx.conf,配置文件由配置指令/参数组成,有些指令/参数位于main的位置(如:events、http),有些指令/参数位于其他参数下(如:server位于http下);......
  • Mybatis设计模式
    创建型建造者模式,工厂模式我们在单独Mybatis框架执行SQL语句的时候,需要获得SqlSession实例来直接执行已映射的SQL语句,在获得SqlSession实例的过程中,就使用了建造者模式和工厂模式。我们来看看一下调用过程:1Stringresource="org/mybatis/example/mybatis-config.xml";2......
  • ICT实战系统集成-LAB2-openEuler 命令行基础操作入门
    ICT实战系统集成-实验02-openEuler命令行基础操作入门1思考题1.1创建一个/iamthebest目录;1.2在/iamthebest目录下创建/cat和/dog两个目录;1.3将/etc/passwd文件复制到/iamthebest目录;并查看被复制文件的操作权限;1.4尝试执行cp-i/etc/passwd.你会发现什么?为什么......