IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MyBatis-Plus -> 正文阅读

[Java知识库]MyBatis-Plus

目录

为什么要学习MyBatisPlus?

简介

特性

框架结构

快速入门

步骤

说明:

注意点:我们需要在启动类上去扫描我们的mapper包下的所有的接口@MapperScan("com.system.bootMyplus.mapper")

思考问题?


为什么要学习MyBatisPlus?

因为MyBatisPlus可以节省我们大量工作时间,所以的CRUD代码(业务的描述)它都可以自动化完成。

市面上流行JPA(继承SpringBoot,此法比较多)、tk-mapper(用的比较多)、MyBatisPlus(主要是学会偷懒)

要想学会MyBatis-Plus,得先学会SSM和SpringBoot!!!!!

简介

MyBatis本来就是简化JDBC操作的,而MyBaitsPlus则简化MyBatis。

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
  • ? 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作。 ?
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。以后简单的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 操作智能分析阻断,也可自定义拦截规则,预防误操作。
  • 支持数据库:任何能使用 mybatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。
  • mysql,oracle,db2,h2,hsql,sqlite,postgresql,sqlserver,Phoenix,Gauss ,clickhouse,Sybase,OceanBase,Firebird,cubrid,goldilocks,csiidb

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

框架结构

快速入门

使用第三方组件:

1、导入对应的依赖。

2、研究依赖如何配置。

3、代码如何编写。

4、提高扩展技术能力。

步骤

1、创建数据库mybatis_plus。

2、创建user表。

CREATE TABLE user
(
	id BIGINT(20) 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)
);


INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
--真实开发中,version(乐观锁)、deleted(逻辑删除)、gmt_create(表的创建时间)、gmt_modified(修改时间)

3、编写项目,使用SpringBoot初始化。

若使用SpringBoot模板创建项目,过程如下:

?

?

?4、导入依赖。(若使用maven创建的话,则导入依赖)

<?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>

    <groupId>org.example</groupId>
    <artifactId>SpringBoot_MyBatilPlus</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
    </parent>
    <!-- web场景依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.4</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
    </dependencies>
    <!-- 打成jar包依赖 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

说明:

我们使用MyBatisPlus可以节省我们大量的代码,尽量不要同时导入MyBatis和Mybaits-plus版本的差异。

5、连接数据库,和MyBatis相同。创建application.yml

#SpringBoot整合Mybatis-Plus相关配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  #设置文件大小
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 100MB
#mybatis-plus配置及其日志输出
mybatis-plus:
  configuration:
    # 日志
#    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  mapper-locations: ["classpath*/mapper/*.xml"]
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
      logic-delete-field: flag
      #驼峰下划线转换
      column-underline: true

传统方式6、pojo【bean】-dao【mapper,连接mybatis,配置mapper.xml文件】-service-controller

6、使用MyBatis-Plus之后:

  • pojo【bean】

package com.system.bootMyplus.bean;

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

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
  • mapper【接口】
package com.system.bootMyplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.system.bootMyplus.bean.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

//在对应的Mapper上面实现基本的接口 BaseMapper
@Mapper
@Repository
//@Repository 若不加@Mapper则加此注解,代表dao层(也就是mapper层)持久层注解
public interface UserMapper extends BaseMapper<User> {
    /**
     * 所以的CRUD操作已经编写完成
     * 无需像以前一样配置一大堆xml文件
     */
}
               
  • 启动类
package com.system.bootMyplus;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//扫描并识别到mapper文件夹即可
@MapperScan("com.system.bootMyplus.mapper")
@SpringBootApplication
public class WebApplication {
    public static void main(String[] args) {
        SpringApplication.run(com.system.bootMyplus.WebApplication.class,args);
    }
}
  • Spring测试

package com.system.bootMyplus;

import com.system.bootMyplus.bean.User;
import com.system.bootMyplus.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
public class MybatisPlusApplicationTests {
    /**
     * 继承了BasesMapper,所有的方法都源于自己的父类,我们也可以编写自己的扩展方法
     */
    @Autowired
    private UserMapper userMapper;
    @Test
    void contextLoads(){
        //查询全部用户
        /**
         * 其参数就是一个wrapper,条件构造器材,若不用,则写为null
         */
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }
}
  • application.yml配置文件
#SpringBoot整合Mybatis-Plus相关配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
  #设置文件大小
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 100MB
#mybatis-plus配置及其日志输出
mybatis-plus:
  configuration:
    # 日志
#    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
#  mapper-locations: ["classpath*/mapper/*.xml"]
  global-config:
    db-config:
      logic-delete-value: 1
      logic-not-delete-value: 0
      logic-delete-field: flag
      #驼峰下划线转换
      column-underline: true

注意点:我们需要在启动类上去扫描我们的mapper包下的所有的接口@MapperScan("com.system.bootMyplus.mapper")

思考问题?

1、SQL谁帮我们写?

2、方法哪里来的?

答:1、2、答案相同。为之,MyBatisPlus都写好了,我们直接使用即可。若里面接口没有所要使用的话,可以编写自己的扩展方法。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 11:54:42  更:2021-12-05 11:56:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:55:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码