网站设计太原,.net做网站的吗,微平台图片,长沙整合推广Mybatis-Plus入门
MyBatis-Plus 官网#xff1a;https://mp.baomidou.com/
1、简介
MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具#xff0c;在 MyBatis 的基础上只做增强不做改变#xff0c;为简化开发、
提高效率而生。
https://github.com/baomidou/mybatis-p…Mybatis-Plus入门
MyBatis-Plus 官网https://mp.baomidou.com/
1、简介
MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变为简化开发、
提高效率而生。
https://github.com/baomidou/mybatis-plus
https://www.mybatis.org/mybatis-3/
1.1 特性 无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑。 损耗小启动即会自动注入基本 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 操作智能分析阻断也可自定义拦截规则预防误操作。
1.2 支持数据库 任何能使用 MyBatis 进行 CRUD并且支持标准 SQL 的数据库具体支持情况如下 MySQLOracleDB2H2HSQLSQLitePostgreSQLSQLServerPhoenixGauss ClickHouseSybaseOceanBaseFirebirdCubridGoldilockscsiidb 达梦数据库虚谷数据库人大金仓数据库南大通用(华库)数据库南大通用数据库神通数据库瀚高数 据库
1.3 框架结构 1.4 代码托管
https://gitee.com/baomidou/mybatis-plus
https://github.com/baomidou/mybatis-plus
MyBatis-Plus-Dochttps://github.com/baomidou/mybatis-plus-doc
Awesome-MyBatis-Plushttps://github.com/baomidou/awesome-mybatis-plus
使用例子https://github.com/baomidou/mybatis-plus-samples
2、快速开始
我们将通过一个简单的 Demo 来阐述 MyBatis-Plus 的强大功能在此之前我们假设您已经 拥有 Java 开发环境以及相应 IDE 熟悉 Spring Boot 熟悉 Maven
现有一张 User 表其表结构如下
idnameageemail1Jone18test1baomidou.com2Jack20test2baomidou.com3Tom28test3baomidou.com4Sandy21test4baomidou.com5Billie24test5baomidou.com
其对应的数据库 Schema 脚本如下
create database mybatis_test;use mybatis_test;DROP TABLE IF EXISTS 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)
);其对应的数据库 Data 脚本如下
DELETE FROM user;INSERT INTO user (id, name, age, email) VALUES
(1, Jone, 18, test1baomidou.com),
(2, Jack, 20, test2baomidou.com),
(3, Tom, 28, test3baomidou.com),
(4, Sandy, 21, test4baomidou.com),
(5, Billie, 24, test5baomidou.com);如果从零开始用 MyBatis-Plus 来实现该表的增删改查我们需要做什么呢 2.1 初始化工程
创建一个空的 Spring Boot 工程(工程将以 mysql 作为默认数据库进行演示)
2.1.1 添加依赖
引入 Spring Boot Starter 父工程
parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0 版本/versionrelativePath/
/parent引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、mysql 依赖
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion最新版本/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency
/dependencies总的依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.5/versionrelativePath//parentgroupIdcom.zsx/groupIdartifactIdspring-boot-mybatis-plus/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-boot-mybatis-plus/namedescriptionSpring Boot Mybatis Plus/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.0.3/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetest/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project2.1.2 配置
在 application.yml 配置文件中添加 MySQL 数据库的相关配置
# DataSource Config
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis_test?serverTimezoneUTCuseUnicodetruecharacterEncodingutf8useSSLfalseusername: rootpassword: root在 Spring Boot 启动类中添加 MapperScan 注解扫描 Mapper 文件夹
package com.zsx;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
MapperScan(com.zsx.mapper)
public class SpringBootMybatisPlusApplication {public static void main(String[] args) {SpringApplication.run(SpringBootMybatisPlusApplication.class, args);}}2.1.3 编码
编写实体类 User.java (此处使用了 Lombok 简化代码)
package com.zsx.entity;import lombok.Data;Data
public class User {private Long id;private String name;private Integer age;private String email;
}编写 Mapper类 UserMapper.java
package com.zsx.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsx.entity.User;
import org.springframework.stereotype.Repository;Repository
public interface UserMapper extends BaseMapperUser {}2.1.4 开始使用
添加测试类进行功能测试
package com.zsx;import com.zsx.entity.User;
import com.zsx.mapper.UserMapper;
import org.junit.Assert;
import org.junit.jupiter.api.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
class SpringBootMybatisPlusApplicationTests {Autowiredprivate UserMapper userMapper;Testpublic void testSelect() {System.out.println((----- selectAll method test ------));ListUser userList userMapper.selectList(null);Assert.assertEquals(5, userList.size());userList.forEach(System.out::println);}}UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper所以不填写就是无任何条件。 控制台输出
User(id1, nameJone, age18, emailtest1baomidou.com)
User(id2, nameJack, age20, emailtest2baomidou.com)
User(id3, nameTom, age28, emailtest3baomidou.com)
User(id4, nameSandy, age21, emailtest4baomidou.com)
User(id5, nameBillie, age24, emailtest5baomidou.com)2.2 小结
通过以上几个简单的步骤我们就实现了 User 表的 CRUD 功能甚至连 XML 文件都不用编写
从以上步骤中我们可以看到集成 MyBatis-Plus 非常的简单只需要引入 starter 工程并配置 mapper 扫描路
径即可。
这里只是简单的介绍 MyBatis-Plus 的使用其他详细的使用请参考 MyBatis-Plus 官网。