开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情
引言
I. 预备知识
1.1 mysql 各字段类型存储文本信息的最大值
- text,最大65535字节
- mediumtext,最大16777215字节
- longtext,2的32次方减1个,即4294967295个字节
1.2 集成mybatis-plus、web、mysql等相关依赖
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
1.3 配置application.yml
# 服务端口
server:
port: 7005
spring:
redis:
datasource:
II 查询相关
- Wrapper:条件构造抽象类,最顶端父类;
- AbstractWrapper:用于查询条件封装,生成sql的where条件;
- AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column。
- LambdaQueryWrapper:用于lambda语法使用的查询Wrapper;
- LambdaUpdateWrapper:Lambda更新封装Wrapper;
- QueryWrapper:Entity对象封装操作类,不是用lambda;
- UpdateWrapper:Update条件封装,用于Entity对象更新操作。
2.1 排除指定字段
应用场景:排除标识字段,如密码、密钥、公钥、私钥。
方式1:通过querywrapper中的select方法来排除
.select("需要的数据库列")
select(CusArticle.class, i -> !i.getColumn().equals("content"))//这种写法equals里面写的是数据库字段名称
.select(CusArticle.class,info -> !info.getProperty().equals("content"))//这种写法equals里面写的是java类中的字段名称
方式2:通过@TableField()
@TableField(exist = false)
案例
List<String> excludeFields = Arrays.asList("secretKey","privateKey","publicKey");
// lambda.select(TFacFacilitatorChannel.class, i -> !i.getColumn().equals("secret_key"));//mybatis-plus queryWrapper排除指定字段,equals里面写的是数据库字段名称
lambda.select(TFacFacilitatorChannel.class, i -> !excludeFields.contains(i.getProperty()));//mybatis-plus queryWrapper排除指定字段,equals里面写的是java类中的字段名称
III 更新相关
3.1 根据条件批量修改字段信息
查询对应类型数据,先把之前的设置为失效,保留历史配置信息。
// 查询对应类型数据,先把之前的设置为失效,保留历史配置信息。
LambdaUpdateWrapper<OrganPayRate> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(OrganPayRate::getState, EEnableState.Deactivate);
updateWrapper.eq(OrganPayRate::getFacilitatorId, organ.getFacilitatorId());
updateWrapper.eq(OrganPayRate::getTagsId, organ.getTagsId());
updateWrapper.eq(OrganPayRate::getType, input.getType());
OrganPayRateService.update(updateWrapper);
see also
公众号:iOS逆向