写在最前
本文在【数据篇】SpringBoot 整合 MyBatis 操作 MySql基础上使用 MyBatis-Plus 增强。
MyBatis-Plus
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
文档地址:https://baomidou.com/pages/24112f/
特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 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 操作智能分析阻断,也可自定义拦截规则,预防误操作
SpringBoot 整合 MyBatis-Plus
Demo 地址:mingyue-springboot-mybatis-plus
1.引入依赖
<!-- Mysql 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
2.改进实体类
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/** @author Strive */
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "用户实体类", description = "用户信息描述类")
@TableName("sys_user")
public class MingYueUser {
@TableId
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "用户名")
private String username;
}
3.改进 Mapper 接口
只有简单的 CRUD 可以删除对应的 SysUserMapper.xml,相对复杂的 SQL 还是需要 SysUserMapper.xml
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.csp.mingyue.mybatisPlus.model.MingYueUser;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Strive
* @date 2022/4/20 15:25
* @description
*/
@Mapper
public interface SysUserMapper extends BaseMapper<MingYueUser> {}
4.改进 Service
import com.csp.mingyue.mybatisPlus.mapper.SysUserMapper;
import com.csp.mingyue.mybatisPlus.model.MingYueUser;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
/** @author Strive */
@Service
@RequiredArgsConstructor
public class MingYueUserService {
private final SysUserMapper sysUserMapper;
/**
* 根据用户ID查询用户信息
*
* @param userId 用户ID
* @return 用户信息
*/
public MingYueUser queryUserById(Long userId) {
return sysUserMapper.selectById(userId);
}
}
5.测试接口
访问:http://127.0.0.1:8080/user/2
返回示例:
{
"userId": 2,
"username": "Strive"
}
6.配置日志输出
# 配置日志输出 使用默认控制台打印
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
访问:http://127.0.0.1:8080/user/2
日志如下:
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53001d7] was not registered for synchronization because synchronization is not active
2022-04-20 16:48:45.835 INFO 13616 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-04-20 16:48:46.597 INFO 13616 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
JDBC Connection [HikariProxyConnection@1977143528 wrapping com.mysql.cj.jdbc.ConnectionImpl@1aa697b8] will not be managed by Spring
==> Preparing: SELECT user_id,username FROM sys_user WHERE user_id=?
==> Parameters: 1(Long)
<== Columns: user_id, username
<== Row: 1, mingyue
<== Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@53001d7]
更多功能使用直接参考官方文档:https://baomidou.com/pages/24112f/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78339.html