mybatis-plus 使用总结
Java开发组件
1.IDEA
2.JDK
3.Git
4.Maven安装配置
5.Mysql
6.Mybatis
7.Mybatis-plus
8.Nacos
9.Openfeign
10.Gateway
11.xxl-job-admin
12.Skywalking
13.Sentinel
14.Arthas
15.Redis
16.Mongodb
17.ES
18.StarRocks
19.Datax
-----------------mybatis-plus 使用总结-----------------
1.mybatis-plus 简介
简单配置,及可单表实现增删改查,分页插件
多表查询还是可以使用mybaits
2.pom.xml添加依赖项:
3.定义接口继承mybatisplus: public interface UserMapper extends BaseMapper
类名驼峰转下划线作为表名
名为id的字段作为主键,自动增长
变量名驼峰转下划线作为表的字段名
MybatisPlus中比较常用的几个注解如下:当定义的表名和数据库表面不一致时:
@TableName:用来指定表名
@TableId:用来指定表中的主键字段信息
@TableField:用来指定表中的普通字段信息
@TableName("tb_user")
public class User {
@TableId(value = IdType.AUTO) //默认是ASSIGN_ID
private Long id;
@TableField("username")
private String username;
@TableField("'order'")
private Integer order;
@TableField("is_married")
private Boolean isMarried;
@TableField(exist = false)
private String address;
IdType枚举:
AUTO:数据库自增长
INPUT:通过set方法自行输入
ASSIGN_ID:分配 ID,接口IdentifierGenerator的方法nextId来生成id,默认实现类为DefaultIdentifierGenerator雪花算法
使用@TableField的常见场景:
成员变量名与数据库字段名不一致
成员变量名以is开头,且是布尔值
成员变量名与数据库关键字冲突
成员变量不是数据库字段
MybatisPlus是如何获取实现CRUD的数据库表信息的?
默认以类名驼峰转下划线作为表名
默认把名为id的字段作为主键
默认把变量名驼峰转下划线作为表的字段名
MybatisPlus的常用注解有哪些?
@TableName:指定表名称及全局配置
@TableId:指定id字段及相关配置
@TableField:指定普通字段及相关配置
IdType的常见类型有哪些?
AUTO、ASSIGN_ID、INPUT
使用@TableField的常见场景是?
成员变量名与数据库字段名不一致
成员变量名以is开头,且是布尔值
成员变量名与数据库关键字冲突
成员变量不是数据库字段
4.测试mybatisplus方法
public class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void testInsert(){
User user =new User();
user.setId(5l);
user.setUsername("denny");
userMapper.insert(user);
}
- mp支持的常见配置,
MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。例如:
mybatis-plus:
type-aliases-package: com.itheima.mp.domain.po # 别名扫描包
mapper-locations: "classpath:/mapper/**/.xml" # Mapper.xml文件地址,默认值
configuration:
map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射
cache-enabled: false # 是否开启二级缓存
global-config:
db-config:
id-type: assign_id # id为雪花算法生成
update-strategy: not_null # 更新策略:只更新非空字段
----------------------------------------------------mybatis plus -----------------------------------------------------------------------
mybatis-plus使用总结
application.yaml
spring:
datasource:
url: jdbc:mysql://10.10.*.*:3306/db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
logging:
level:
com.itheima: debug
pattern:
dateformat: HH:mm:ss
server:
port: 8080
mybatis-plus:
global-config:
db-config:
id-type: assign_id
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
mapper-locations: classpath*:/mapper/**/*.xml #mapper.xml文件地址,默认地址resource/mapper/UserMapper.xml
knife4j:
enable: true
openapi:
title: 用户管理接口文档
description: "用户管理接口文档"
email: zhanghuyi@itcast.cn
concat: 虎哥
url: https://www.itcast.cn
version: v1.0.0
group:
default:
group-name: default
api-rule: package
api-rule-resources:
com.example.mpdemo.controller
0.pom.xml
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<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>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>3.0.3</version>
</dependency>
1.BaseMpper
2.IService
3.
@Api(tags="用户管理接口")
@RequestMapping("/users")
@RestController
@RequiredArgsConstructor
public class UserController{
private final IUserService userService;
@ApiOperation("新增用户接口")
@PostMapping
public void saveUser(@RequestBody UserFormDto userDto){
User user=BeanUtil.copyProperties(userDto,User.class);
userService.save(user);
}
}
swigger:
localhost:8080/doc.html
3.复杂条件的查询接口,lambdaQuery,lambdaUpdate .update()
4.IService 批量新增
serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true mysql 3.1.13开始
将批量提交的sql 瓶装为一个sql一次执行,效率高10
向mysql插入10万条数据:
普通for循环一个个插入,最慢2100秒
IService批量插入 26秒,批量提交,逐条执行
开启rewriteBatchedStatements=true参数 6秒,批量提交,一次执行
5 扩展功能:
代码生成器,mybatisPLUS 插件--other-->config database,code generator
静态工具 在service层使用mybatis-plus 提供的强大功能
.Db.list()
void testDbMethod(){
// List<Long> idList= Arrays.asList(1l,2l,5l);
Db.count(User.class);
}
6.逻辑删除:
mybatis-plus:
global-config:
db-config:
id-type: assign_id
logic-delete-field: deleted #逻辑删除的字段名
logic-delete-value: 1
logic-not-delete-value: 0
7.enum处理器:status:1正常,2冻结,
@enumvalue
@jsonvalue
8.json处理器,处理数据库字段json数据类型的字段
9.分页插件及其他插件
分页插件拦截器
MybaticConfig,page
10.分页通用实体
pageDto 统一查询条件
voDto 统一返回结果
pageQuery 查询条件封装
pageDTO 分页结果封装
lamdaQuery
11 分页代码封装
pageQuery
------12.关于Mybatis Plus中BaseMapper和IService区别------------
1.BaseMapper接口
BaseMapper是Mybatis Plus提供的基础Mapper接口。它提供了常见的CRUD操作方法,如插入、修改、删除和查询等。BaseMapper是一个通用接口,可以适用于各种实体类的操作。这减少了开发人员需要编写的代码量,提高了开发效率。
2.IService接口
IService是Mybatis Plus提供的服务接口。它提供了一些高级的CRUD操作方法,如批量插入、批量删除和分页查询等。IService接口是一个抽象的接口,可以根据实际需要进行实现。通常与BaseMapper接口结合使用,提供更加灵活和高效的数据操作。
3.BaseMapper和IService的区别
BaseMapper接口提供了基本的CRUD操作方法,而IService接口则提供了更高级的CRUD操作方法,如批量插入、批量删除和分页查询等。IService接口还提供了一些其他的功能,如缓存管理、排序和字段自动填充等。BaseMapper接口和IService接口的使用方式和实现也有所不同。
4.最佳实践
建议在使用Mybatis Plus时,首先使用BaseMapper接口进行基本的CRUD操作。如果需要更高级的操作,可以根据具体需求进行IService接口的实现。在实现IService接口时,可以根据具体需求进行方法的定义和实现,提供更加灵活和高效的数据操作和其他实用功能。
总之,Mybatis Plus提供了BaseMapper和IService接口用于CRUD操作。BaseMapper提供了基本的CRUD操作方法,而IService提供了更高级的操作和其他实用功能。BaseMapper和IService的使用和实现取决于具体需求和要求。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-11-22 centos7 下载并安装.netcore SKD,运行.netcore 应用程序