营销型企业网站分,互联网公司排名最新,wordpress移动版插件,阿里云网站备份文章目录
一、什么是 Mybatis Plus 特性 二、Spring Boot 3.0 集成 Mybatis Plus三、Mybatis Plus 查询示例 1、普通查询2、分页查询 参考
一、什么是 Mybatis Plus
MyBatis-Plus#xff08;简称 MP#xff09;是一个 MyBatis 的增强工具#xff0c;在 MyBatis 的基础上只…文章目录
一、什么是 Mybatis Plus 特性 二、Spring Boot 3.0 集成 Mybatis Plus三、Mybatis Plus 查询示例 1、普通查询2、分页查询 参考
一、什么是 Mybatis Plus
MyBatis-Plus简称 MP是一个 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生。
特性
无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 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 操作智能分析阻断也可自定义拦截规则预防误操作
二、Spring Boot 3.0 集成 Mybatis Plus
1、 添加依赖
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId
/dependency
dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.6/version
/dependency
!-- mybatis plus --
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.5/version
/dependency
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis-spring/artifactIdversion3.0.3/version
/dependency注意 SpringBoot 3.0 需要 mybatis-spring 3.0.X 版本否则会报如下错误 Invalid value type for attribute factoryBeanObjectType‘: java.lang.String 2、配置数据源
# druid 数据源配置
spring.datasource.urljdbc:mysql://localhost:3306/your_db?useUnicodetruecharacterEncodingutf-8allowMultiQueriestrueuseSSLfalseserverTimezoneAsia/Shanghai
spring.datasource.usernameroot
spring.datasource.passwordpassword
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
spring.datasource.typecom.alibaba.druid.pool.DruidDataSource
# 初始化大小最小最大
spring.datasource.druid.initial-size5
spring.datasource.druid.min-idle5
spring.datasource.druid.maxActive20
# 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒
spring.datasource.druid.timeBetweenEvictionRunsMillis60000
# 配置一个连接在池中最小生存的时间单位是毫秒
spring.datasource.druid.minEvictableIdleTimeMillis300000
spring.datasource.druid.validationQuerySELECT 1
spring.datasource.druid.testWhileIdletrue
spring.datasource.druid.testOnBorrowfalse
spring.datasource.druid.testOnReturnfalse
spring.datasource.druid.stat-view-servlet.allowtrue
spring.datasource.druid.web-stat-filter.enabledtrue
spring.datasource.druid.web-stat-filter.url-pattern/druid/*
spring.datasource.druid.filtersstat,wall,slf4j
spring.datasource.druid.connectionPropertiesdruid.stat.mergeSqltrue;druid.stat.slowSqlMillis5000# --- mybatis-plus start
mybatis-plus.mapper-locationsclasspath:/org/shi9/module/**/xml/*Mapper.xml
# 关闭MP3.0自带的banner
mybatis-plus.global-config.bannerfalse
# 主键类型 0:数据库ID自增,1:该类型为未设置主键类型, 2:用户输入ID,3:全局唯一ID (数字类型唯一ID), 4:全局唯一ID UUID,5:字符串全局唯一ID (idWorker 的字符串表示);
mybatis-plus.global-config.db-config.id-typeASSIGN_ID
# 返回类型为Map,显示null对应的字段
mybatis-plus.configuration.call-setters-on-nullstrue
# 这个配置会将执行的sql打印出来在开发或测试的时候可以用
mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl
# --- mybatis-plus end3、创建实体类和 Mapper
创建你的实体类和对应的 Mapper 接口。MyBatis Plus 会自动扫描这些类并为你生成相应的 Mapper 和 SQL 语句。你也可以使用 MyBatis Plus 的 CRUD 操作来简化开发。
这里以SysLog为例
SysLogMapper.xml
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespaceorg.shi9.module.system.mapper.SysLogMapper
/mapperSysLogMapper.java
Mapper
public interface SysLogMapper extends BaseMapperSysLog {}4、编写 Service 类
public interface ISysLogService extends IServiceSysLog {}Service
public class SysLogServiceImpl extends ServiceImplSysLogMapper, SysLog implements ISysLogService {}5、编写测试类
Slf4j
SpringBootTest
public class SysLogServiceTest {Autowiredprivate ISysLogService sysLogService;Testpublic void findTotal(){Long total sysLogService.count();System.out.println(total);}
}三、Mybatis Plus 查询示例
1、普通查询
以下是使用 MyBatis Plus 进行查询的示例
根据主键查询单个结果
使用 selectById 方法查询单个结果
User user userMapper.selectById(1L);查询多条记录
使用 selectList 方法查询多条记录
ListUser users userMapper.selectList(null);使用 QueryWrapper 进行查询
可以使用 QueryWrapper 对查询条件进行组装
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.eq(name, John).lt(age, 30);
ListUser userList userMapper.selectList(queryWrapper);分页查询
使用 Page 类进行分页查询
PageUser page new Page(1, 10); // 第1页每页显示10条记录
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.eq(name, John);
page.setFilter(queryWrapper);
PageUser result userMapper.selectPage(page, null);模糊查询
使用 like 方法进行模糊查询
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.like(name, Jo);
ListUser userList userMapper.selectList(queryWrapper);排序查询
使用 orderBy 方法进行排序查询
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.orderByDesc(age);
ListUser userList userMapper.selectList(queryWrapper);聚合查询
使用 groupBy 和 sum、count 等方法进行聚合查询
QueryWrapperUser queryWrapper new QueryWrapper();
queryWrapper.groupBy(age);
Long totalCount userMapper.selectSum(queryWrapper, age);自定义 SQL
使用 Select 注解自定义 SQL 语句
Select(SELECT * FROM user WHERE age #{age})
ListUser selectUsersByAge(Param(age) Integer age);这些示例只是 MyBatis Plus 提供的一些常见查询方法的冰山一角。MyBatis Plus 还提供了很多其他功能和扩展可以根据需要进行配置和使用。同时MyBatis Plus 还支持与其他组件的集成例如分页插件、乐观锁插件等可以帮助你更加高效地进行数据库操作。
2、分页查询
MyBatis Plus 支持分页功能可以通过配置分页插件来实现。分页插件可以帮助我们自动处理分页相关的 SQL 语句简化分页逻辑。以下是使用分页插件的步骤
1、配置分页插件
Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();// 配置分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor());// 增加Version乐观锁支持interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;
}2. 使用分页插件
在 Mapper 接口或 XML 映射文件中使用分页插件提供的查询方法进行分页查询。例如
Select(SELECT * FROM user WHERE 11)
PageUser selectUserPage(PageUser page);在查询方法上使用 Page 参数MyBatis Plus 会自动处理分页相关的 SQL 语句返回包含分页信息的 Page 对象。你可以根据需要配置查询条件、排序规则等。
3. 处理分页结果
根据返回的 Page 对象你可以获取当前页的数据、总记录数、总页数等信息进行相应的业务处理。例如
PageUser page userMapper.selectUserPage(new Page(1, 10)); // 第1页每页显示10条记录
ListUser userList page.getRecords(); // 当前页的数据列表
int totalCount page.getTotal(); // 总记录数
int totalPage page.getPages(); // 总页数通过这些步骤你可以在 MyBatis Plus 中配置和使用分页插件简化分页逻辑提高开发效率。
参考
Mybatis Plus