网站的标准,北京文化馆设计公司怎么看,广东省省的建设厅官方网站,商企通三合一网站建设MyBatisPlus 用法详解
MyBatis-Plus#xff08;简称MP#xff09;是一个MyBatis的增强工具#xff0c;在MyBatis的基础上只做增强不做改变#xff0c;为简化开发、提高效率而生。它提供了丰富的功能#xff0c;包括强大的CRUD操作、条件构造器、自动填充、分页插件等简称MP是一个MyBatis的增强工具在MyBatis的基础上只做增强不做改变为简化开发、提高效率而生。它提供了丰富的功能包括强大的CRUD操作、条件构造器、自动填充、分页插件等极大地简化了开发工作。以下是对MyBatis-Plus的详细用法介绍。
一、MyBatis-Plus简介
MyBatis-Plus的官网地址为https://mybatis.plus/ 或 https://mp.baomidou.com/。
MyBatis-Plus的主要特性包括
无侵入只做增强不做改变引入它不会对现有工程产生影响。损耗小启动即会自动注入基本CRUD性能基本无损耗直接面向对象操作。强大的CRUD操作内置通用Mapper、通用Service仅仅通过少量配置即可实现单表大部分CRUD操作更有强大的条件构造器满足各类使用需求。支持Lambda形式调用通过Lambda表达式方便地编写各类查询条件无需再担心字段写错。支持主键自动生成支持多达4种主键策略内含分布式唯一ID生成器-Sequence可自由配置完美解决主键问题。支持ActiveRecord模式支持ActiveRecord形式调用实体类只需继承Model类即可进行强大的CRUD操作。支持自定义全局通用操作支持全局通用方法注入Write once, use anywhere。内置代码生成器采用代码或者Maven插件可快速生成Mapper、Model、Service、Controller层代码支持模板引擎更有超多自定义配置。内置分页插件基于MyBatis物理分页开发者无需关心具体操作配置好插件之后写分页等同于普通List查询。内置性能分析插件可输出Sql语句以及其执行时间建议开发测试时启用该功能能快速揪出慢查询。
二、MyBatis-Plus基本使用
1. 引入依赖
MyBatis-Plus提供了starter实现了自动Mybatis以及MyBatis-Plus的自动装配功能。在Maven项目的pom.xml文件中添加以下依赖
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion最新版本号/version
/dependency注意尽量不要同时导入MyBatis和MyBatis-Plus避免版本差异。
2. 配置数据库连接
在application.yml或application.properties文件中配置数据库连接信息。例如使用application.yml文件
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/数据库名?useUnicodetruecharacterEncodingutf8serverTimezoneGMT%2B8username: 账号password: 密码3. 使用
在Spring Boot启动类中添加MapperScan注解扫描Mapper文件夹
SpringBootApplication
MapperScan(com.example.mapper) // 替换为你的Mapper所在的类路径
public class MyBatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusApplication.class, args);}
}在对应的Mapper上面添加Mapper注解并继承BaseMapper类
Mapper
public interface UserMapper extends BaseMapperUser {// 所有的CRUD都已经完成不需要像以前一样配置一大堆文件
}其中User是实体类对应数据库中的一张表。
4. 编写实体类
实体类通常使用Lombok库来简化代码。例如
import lombok.Data;Data
public class User {private Long id;private String name;private Integer age;// 其他字段...
}MyBatis-Plus会根据PO实体BaseMapperT中的T的信息来推断出表的信息从而生成SQL。默认情况下MyBatis-Plus会把PO实体的类名驼峰转下划线作为表名把PO实体的所有变量名驼峰转下划线作为表的字段名并根据变量类型推断字段类型。如果默认实现与实际场景不符可以使用注解来声明表信息。
TableName标识实体类对应的表。当实体类的名称和表名的命名不一致时使用。TableId标识实体类中的主键字段。如果主键字段的命名符合规范如id则不需要使用该注解。TableField标识实体类中的普通属性。当实体类的命名和数据库的字段名有出入时使用。
三、CRUD操作
MyBatis-Plus提供了丰富的CRUD操作方法这些方法都定义在BaseMapper接口中。
1. 插入
使用insert方法插入一条记录
User user new User();
user.setName(张三);
user.setAge(18);
// 其他字段设置...
userMapper.insert(user);2. 删除
使用deleteById方法根据主键删除一条记录
userMapper.deleteById(1L);使用deleteBatchIds方法根据主键批量删除记录
ListLong ids Arrays.asList(1L, 2L, 3L);
userMapper.deleteBatchIds(ids);3. 更新
使用updateById方法根据主键更新一条记录
User user new User();
user.setId(1L);
user.setName(李四);
// 其他字段设置需要更新的字段...
userMapper.updateById(user);4. 查询
使用selectById方法根据主键查询一条记录
User user userMapper.selectById(1L);使用selectList方法查询所有记录
ListUser userList userMapper.selectList(null);使用条件构造器Wrapper进行复杂查询。例如查询年龄大于18岁的用户
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.gt(age, 18);
ListUser userList userMapper.selectList(queryWrapper);四、条件构造器
MyBatis-Plus提供了强大的条件构造器用于构建复杂的查询条件。条件构造器的核心类是Wrapper其子类包括QueryWrapper和UpdateWrapper。
1. 基本比较操作
使用eq、ne、gt、ge、lt、le等方法进行基本比较操作。例如
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.eq(name, 张三); // 等价于 WHERE name 张三
queryWrapper.ne(age, 18); // 等价于 WHERE age 182. 模糊查询
使用like、notLike、likeLeft、likeRight等方法进行模糊查询。例如
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.like(name, 张); // 等价于 WHERE name LIKE %张%3. 排序
使用orderByAsc、orderByDesc等方法进行排序。例如
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.orderByAsc(age); // 等价于 ORDER BY age ASC4. 逻辑查询
使用and、or、nested等方法进行逻辑查询。例如
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.and(wrapper - wrapper.eq(name, 张三).ne(age, 18));
// 等价于 WHERE (name 张三 AND age 18)5. select
使用select方法指定查询的字段。例如
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.select(name, age); // 只查询name和age字段
ListMapString, Object userList userMapper.selectMaps(queryWrapper);五、ActiveRecord
MyBatis-Plus支持ActiveRecord模式实体类只需继承Model类即可进行强大的CRUD操作。不过需要注意的是从MyBatis-Plus 3.x版本开始Model类已经被废弃推荐使用BaseEntity或自定义实体类配合BaseMapper进行CRUD操作。