mybatis-plus小技能

2022-12-19 17:44:22 浏览数 (2)

引言

I. 预备知识

1.1 mysql 各字段类型存储文本信息的最大值

  • text,最大65535字节
  • mediumtext,最大16777215字节
  • longtext,2的32次方减1个,即4294967295个字节

1.2 集成mybatis-plus、web、mysql等相关依赖

代码语言:javascript复制
<!--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

代码语言:javascript复制
# 服务端口
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("需要的数据库列")

代码语言:javascript复制
select(CusArticle.class, i -> !i.getColumn().equals("content"))//这种写法equals里面写的是数据库字段名称
.select(CusArticle.class,info -> !info.getProperty().equals("content"))//这种写法equals里面写的是java类中的字段名称

方式2:通过@TableField()

代码语言:javascript复制
@TableField(exist = false)


案例

代码语言:javascript复制
            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 根据条件批量修改字段信息

查询对应类型数据,先把之前的设置为失效,保留历史配置信息。

代码语言:javascript复制
        // 查询对应类型数据,先把之前的设置为失效,保留历史配置信息。        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逆向

0 人点赞