当前位置: 首页 > news >正文

MyBatis-Plus的使用基础入门案例

目录

文章目录

  • 目录
  • 简介
  • 特性
  • 框架结构
  • 第一个案例
    • 准备工作
    • 初始化工程
    • 添加依赖
    • 完整的 pom
    • 配置
    • 编写实体类
    • 编写 Mapper
    • 修改启动类- - 扫描 Mapper
    • 测试 运行

简介

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

在这里插入图片描述

特性

⚫ 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
⚫ 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
⚫ 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
⚫ 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
⚫ 支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
⚫ 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),
可自由配置,完美解决主键问题
⚫ 支持 XML 热加载:Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即
可进行强大的 CRUD 操作
⚫ 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
⚫ 支持关键词自动转义:支持数据库关键词(order、key…)自动转义,还可自定义关键

⚫ 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、
Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
⚫ 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,
写分页等同于普通 List 查询
⚫ 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,
能快速揪出慢查询
⚫ 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截
规则,预防误操作
⚫ 内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击

框架结构

在这里插入图片描述

第一个案例

准备工作

拥有 Java 开发环境以及相应 IDE,这里使用 IDEA
整体框架使用 Spring Boot
项目构建使用 Maven
数据库使用 MySQL
准备一张表

/*
创建用户表
*/
DROP  TABLE  IF  EXISTS  user;
CREATE  TABLE  user
(
id  BIGINT(20)  AUTO_INCREMENT  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)
)  default  charset  utf8;
/*
插入测试数据
*/
INSERT  INTO  user (name, age, email)  VALUES
('Tom', 18, 'tom@dowhere.com'),
('Jerry', 20, 'jerry@dowhere.com'),
('Aaron', 28, 'aaron@dowhere.com'),
('Jack', 21, 'jack@dowhere.com'),
('Rose', 24, 'rose@dowhere.com');
select *  from user; 

初始化工程

创建一个空的 Spring Boot 工程
提示:
可以使用 Spring Initializr 快速初始化一个 Spring Boot 工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加依赖

添加相关的依赖,spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、
lombok、MySQL 依赖,需手动添加 mybatis-plus-boot-starter

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

完整的 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 http://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.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.dowhere</groupId>
<artifactId>mybatisplus_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatisplus_demo1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
</project>

配置

在 application.properties 配置文件中添加 MySQL 数据库的相关配置

spring.datasource.driver-lass-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

在这里插入图片描述

编写实体类

编写实体类 User.java(使用 Lombok 简化代码,也可以不用,IDEA 中需要安装插件)

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

在这里插入图片描述

编写 Mapper

编写 Mapper 类 UserMapper.java

package com.dowhere.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dowhere.pojo.User;public interface UserMapper extends BaseMapper<User> {
}

修改启动类- - 扫描 Mapper

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

package com.dowhere;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.dowhere.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

测试 运行

编写测试类,测试运行

package com.dowhere;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dowhere.mapper.UserMapper;
import com.dowhere.pojo.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {@Autowired(required = false)private UserMapper userMapper;@Testpublic void selectAll() {System.out.println(("----- selectAll method test ------"));List<User> userList = userMapper.selectList(null);Assert.assertEquals(5, userList.size());userList.forEach(System.out::println);}@Testpublic void SelectById() {QueryWrapper wrapper = new QueryWrapper();wrapper.eq("id",1);User user = userMapper.selectOne(wrapper);System.out.println(user);}}

在这里插入图片描述


http://www.mrgr.cn/news/36736.html

相关文章:

  • 3d gaussian splatting公式推导
  • 使用 Llama 3.1 和 Qdrant 构建多语言医疗保健聊天机器人的步骤
  • 智能雷达AI名片小程序源码系统 基于PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程
  • 设计模式之观察者模式
  • Git提示信息 Pulling is not possible because you have unmerged files.
  • 桌面PDU插座应用于工业自动化场景
  • AOT源码解析4.4 -decoder生成预测mask并计算loss
  • 《Linux从小白到高手》开篇:脱胎换骨之为什么要深度学习Linux?
  • 一七零、GORM值为0或者空字符串的时候不能被更新创建的五种解决办法
  • 【JavaEE初阶】深入解析死锁的产生和避免以及内存不可见问题
  • electron使用npm install出现下载失败的问题
  • bat脚本的命名方式导致一个脚本不能使用的不明原因的怪事
  • 18 vue3之自动引入ref插件深入使用v-model
  • OceanBase云数据库战略实施两年,受零售、支付、制造行业青睐
  • Vue3 获取验证码按钮,倒计时60s
  • 「点击即复制!」——超实用 JavaScript 实现技巧
  • OpenHarmony(鸿蒙南向)——平台驱动指南【HDMI】
  • TopOn对话游戏魔客:2024移动游戏广告应如何突破?
  • 【GIS】Leaflet:Web地图快速上手
  • 外包干了1个多月,技术明显退步了。。。。。