文章目录
-
-
- [1. 核心功能](#1. 核心功能)
-
- [1.1 配置与编写规则](#1.1 配置与编写规则)
- [1.2 条件构造器](#1.2 条件构造器)
- [1.3 自定义SQL](#1.3 自定义SQL)
- [1.4 IService接口](#1.4 IService接口)
-
- [1.4.1 Lambda方法](#1.4.1 Lambda方法)
- [1.4.2 批量新增](#1.4.2 批量新增)
- [1.5 分页查询](#1.5 分页查询)
- [2. 拓展功能](#2. 拓展功能)
-
- [2.1 代码生成器](#2.1 代码生成器)
- [2.2 DB静态工具](#2.2 DB静态工具)
- [2.3 逻辑删除](#2.3 逻辑删除)
- [2.4 枚举处理器](#2.4 枚举处理器)
- 参考
-
1. 核心功能
1.1 配置与编写规则
Maven依赖:
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
Mapper类:
java
public interface UserMapper extends BaseMapper<User> {
}
实体类命名规则:
YAML文件配置:
yaml
mybatis-plus:
type-aliases-package: com.itheima.mp.domain.po
mapper-locations: "classpath*:/mapper/**/*,xml"
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
global-config:
db-config:
id-type: assign_id
update-strategy: not_null
MyBatis-Plus中比较常用的几个注解如下:
-
@TableName: 指定表名,使用场景:类名与数据库不符。
-
@TableId: 指定主键字段信息,使用场景:绑定主键。
-
@TableField: 指定普通字段信息,使用场景:字段名不符、变量名是布尔值、字段与数据库关键字冲突。
1.2 条件构造器
实现类里面会用到的:
个人理解:尽量用query。Lambda表达式(User::getId)类似这种,不写死代码。
1.3 自定义SQL
使用场景: update、select需要构建where前面的SQL语句。
java
int amount = 200;
QueryWrapper<User> wrapper = new QueryWrapper<User>().in(User::getId, ids);
userMapper.updateBalanceByIds(wrapper, amount);
第一个wrapper参数 一定要加**@Param("ew"),且名字为"ew"**。
java
void updateBalanceByIds(@Param("ew") Lambda......, @Param("xx") ....)
xml
<update>
update user SET balance = balance - #{amount} ${ew.customSqlSegment}
</update>
1.4 IService接口
实现原理图:
接口实现层:
java
public class UserServiceImpl extends IServiceImpl<UserMapper, User> implements IUserService {
}
接口抽象层:
java
public interface IUserService extends IService<User> {
}
1.4.1 Lambda方法
java
return lambdaQuery()
.like(condition, User::getId, id)
.eq(xxx)
.list();
return lambdaQuery()
.set(xxx)
.eq(xxx)
.update();
1.4.2 批量新增
采取批量插入方式:
ps:打开SQL的配置,开启rewriteBatchedStatements=true参数。
java
public void saveBatch() {
List<User> list = new ArrayList<>(1000);
for (int i = 0; i < 100000; i++) {
list.add(buildUser(i));
if (i % 1000 == 0) {
userService.saveBatch(list);
list.clear();
}
}
}
1.5 分页查询
先进行分页查询配置:
java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
然后利用Page<>分页操作:
java
public Result<Page<Article>> list(Integer pageNum, Integer pageSize,
@RequestParam(required = false) String categoryId,
@RequestParam(required = false) String state) {
Page<Article> page = new Page<>(pageNum, pageSize);
return Result.success(articleService.page(page));
}
2. 拓展功能
2.1 代码生成器
Java代码生成: 看文件夹代码。
MybatisX: 选中数据库表,右键选中。
MybatisPlus: 点击上方导航栏other,配置数据库,然后点击生成键,配置后生成。
2.2 DB静态工具
这样就不用注入AddressService了。
2.3 逻辑删除
理解:在数据库中加入delete字段(0,1),从逻辑上判断数据是否被删除。
2.4 枚举处理器
用途: 处理Java枚举类与数据库中字段类型不同的问题。