首页 > 其他分享 >mybatisplus入门

mybatisplus入门

时间:2023-07-26 15:36:40浏览次数:47  
标签:mybatisplus 入门 boot springframework powernode org import com

1. MybatisPlus的介绍

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

愿景我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

mybatisplus入门_User

2. MybatisPlus的特性讲解  11

2.1特性  11

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

• 损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

2.2 支持数据库   11

任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb

达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库

2.3 MybatisPlus的架构模型   12

mybatisplus入门_数据库_02

2.4 小结

本章节主要介绍了传统的Mybatis框架的开发效率问题,通过发现问题,我们期望得到一款增强工具,在不改变Mybatis核心原理的同时,解决Mybatis开发效率问题,并提供其他数据库所需要的功能。

通过了解MybatisPlus,我们得知,它是一款国产的增强工具,极大的简化了Mybatis框架操作,降低了Mybatis框架的学习成本,提高了开发效率,在国内十分流行。

3. 入门案例    13

3.1  准备相关开发环境

IDEA 2021.3.1

PostMan 10.6.7

Navicat 15.0.9

Mysql 5.7.27

JDK8 1.8.0_311   

以上环境各位同学之前一定接触过,没有安装的自行安装,在这里就不再演示安装了

另外需要有Mybatis和springboot相关的基础,如果没有这部分基础的,需要先回顾相关课程

3.2 搭建springboot工程   13

mybatisplus入门_spring_03

mybatisplus入门_User_04

mybatisplus入门_spring_05

3.3 创建表结构   13

我们之前已经创建了,此处不在演示

3.4 案例演示

3.4.1 引入依赖

pom.xml

<?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 https://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.7.13</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.powernode</groupId>
	<artifactId>course2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>course2</name>
	<description>course2</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<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>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.2.8</version>
		</dependency>

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

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

	</dependencies>

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

</project>

application.yml

spring:
  datasource:
    username: root
    password: lzl
    url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver

3.4.2 实体类   14

User

package com.powernode.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

//数据库对应的实体类user   4
@Data  //生成set get方法
@NoArgsConstructor //无参构造
@AllArgsConstructor //有参构造
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

3.4.2 持久层接口   14

package com.powernode.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.powernode.domain.User;
import org.apache.ibatis.annotations.Mapper;

//持久层接口   14
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

3.4.3 业务层接口   15

package com.powernode.service;

import com.powernode.domain.User;

import java.util.List;

//业务层接口   15
public interface UserService {
    //查询所有
    List<User> selectList();
}

3.4.4 业务层接口实现类   15

package com.powernode.service.impl;

import com.powernode.domain.User;
import com.powernode.mapper.UserMapper;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//业务层接口实现类   15
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> selectList() {
        return userMapper.selectList(null);
    }
}

3.4.5 控制层   15

package com.powernode.controller;

import com.powernode.domain.User;
import com.powernode.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

//控制层  15
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/selectList")
    public List<User> selectList(){
        return userService.selectList();
    }
}

测试  16

浏览器输入http://localhost:8080/selectList

mybatisplus入门_spring_06

3.4.6 使用单元测试  16

到此,模拟开发的三层我们就测试完了, 因为Controller和Service都是之前的知识,所以后面我们测试MybatisPlus的代码,通过单元测试的方式来编写

package com.powernode;

import com.powernode.domain.User;
import com.powernode.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.List;

@SpringBootTest
class Course2ApplicationTests {

	@Autowired
	private UserMapper userMapper;

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

}

mybatisplus入门_User_07

4. 精简springboot的相关日志   17

4.1 去除srping和mybatisplus的logo

application.yml

mybatisplus入门_spring_08

spring:
  datasource:
    username: root
    password: lzl
    url: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
  main:
    banner-mode: off #去除spring的图标  17
mybatis-plus:
  global-config:
    banner: false #去除mybatisplus的图标  17

4.2 MybatisPlus的执行日志  17

configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #输出sql日志  17

mybatisplus入门_User_09

5. 小结   17

本章节我们通过编写了一个MybatisPlus的入门案例,体验到了MybatisPlus的便捷性,在后面的学习中,各种各样的MybatisPlus的操作都非常容易上手,可以说MybatisPlus是一款学习成本非常低的增强工具。

标签:mybatisplus,入门,boot,springframework,powernode,org,import,com
From: https://blog.51cto.com/u_15784725/6856496

相关文章

  • Airflow使用入门指南
    Airflow能做什么Airflow是一个工作流分配管理系统,通过有向非循环图的方式管理任务流程,设置任务依赖关系和时间调度。Airflow独立于我们要运行的任务,只需要把任务的名字和运行方式提供给Airflow作为一个task就可以。安装和使用最简单安装在Linux终端运行如下命令(需要已安装好pytho......
  • llvm pass pwn 入门学习
    llvmpasspwn入门学习对于没有学习过C++的人来说很不友好,仿佛让我回到学习java的时候(java烂的一批),各种包,函数,实现类,什么迭代器,红黑树什么的,看来抽点时间学习一下c++是有必要的环境说实话这个环境搞了两天,老是报Erroropening'LLVMHello.so':LLVMHello.so:cannotope......
  • 正点原子Ubuntu入门009---Ubuntu文件权限管理
    一、Ubuntu/Linux文件权限文件权限是指不同用户或用户组对不同文件所拥有的权限,文件权限分为三种:r:可读  w:可写  x:可执行  -rw-r--r--为一组文件权限其中第一位代表文件类型,后面9位分为三组,分别对应拥有者权限、拥有者所在组权限、其他用户权限文件类型: 普......
  • 正点原子Ubuntu入门008---Ubuntu用户和组
    一、Linux用户一般情况下,Linux有三种用户:初次登陆的用户root用户(UID=0)普通用户权限:root用户>初始用户>普通用户(其中初始用户可以创建普通用户)Linux用户记录在/etc/passwd文件内Linux用户密码记录在/etc/shadow文件内,且以加密方式存在用户---UID二、L......
  • MyBatisPlus
    【狂神说Java】MyBatisPlus最新完整教程通俗易懂:https://www.bilibili.com/video/BV17E411N7KN/快速入门使用第三方组件:1、导入对应的依赖2、研究依赖如何配置3、代码如何编写4、提高扩展技术能力【代码演示】pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxm......
  • 1.c++入门以及简单顺序结构
    1.c++入门以及简单顺序结构编程就是教计算机解决问题,编程语言就是和计算机沟通时用到的语言——严欣怡一、编写一个简单的C++程序#include<iostream>usingnamespacestd;intmain(){ cout<<"你好C++,我是严欣怡."; return0;}二、语法基础变量1.变量的概念变......
  • 1.c++入门以及简单顺序结构题目
    #1.c++入门以及简单顺序结构题目##1.计算(a+b)*c的值```c++inta,b,c;cin>>a>>b>>c;cout<<(a+b)*c;return0;```##2.带余除法```c++inta,b;cin>>a>>b;cout<<a/b<<""<<a%b;``````c++//c++中取余结果只与%前面的正负有关系cout<<......
  • 1.C++入门以及简单顺序结构
    1.C++入门以及简单顺序结构编程就教计算机解决问题,编程语言就是和计算机沟通时用到的语言——金思宸一、编写一个简单的c++程序#include<iostream>usingnamespacestd;intmain(){ cout<<"你好c++"; return0;}2、语法基础变量1.变量的概念变量本子是一个装东......
  • Cmake入门
    构建一个最简单的Cmake demo。其中最基础的三个命令是:cmake_minimum_required()project()add_executable()哪怕只有这三个命令都可以 构成一个CMake工程。下面介绍下命令地用法:cmake_minimum_required()cmake_minimum_required(VERSION<min>[...<policy_max>][F......
  • OPC-DX 快速入门
    OPC-DX快速入门新手必读:推荐新手阅读!文档 涉及产品  1、OPC概要过去,为了存取现场设备的数据信息,每个软件开发商都需要编写专用的接口函数。但现场设备的种类繁多且产品的不断升级,给用户和软件开发商带来了巨大的工作负担。系统集成商和开发商急需......