Spring Boot(十二)整合 Mybatis-Plus 核心功能

MybatisPlusConfig.java

@EnableTransactionManagement
@Configuration
@MapperScan("com.hwx.api.mapper")
public class MybatisPlusConfig {

    /*
    * 分页器 使用分页接口必须有这个
    * */
    @Bean
    public PaginationInterceptor paginationInterceptor(){

        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();

        // 攻击 SQL 阻断解析器、加入解析链
        List<ISqlParser> sqlParserList = new ArrayList<>();
        sqlParserList.add(new BlockAttackSqlParser());
        paginationInterceptor.setSqlParserList(sqlParserList);

        return paginationInterceptor;
    }

    /*
    * 逻辑删除必须有这个
    * 并且实体类字段上加上@TableLogic注解
    *  @TableLogic
    *  private Integer deleted;
    * */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

  • 数据分页

PaginationInterceptor 分页拦截器 一定要加,不然分页无效
Page page =new Page<>(pageIndex,pageSize);
iStoreUserChildrenService.page(page,queryWrapper)
就可以返回分页数据

	@GetMapping("findByAttributes")
	@ApiOperation(value = "按属性分页获取小孩列表")
	@ApiImplicitParams({@ApiImplicitParam(paramType = "query", dataType = "String", name = "unionId", value = "unionId"),
						@ApiImplicitParam(paramType = "query", dataType = "String", name = "name", value = "姓名"),
						@ApiImplicitParam(paramType = "query", dataType = "Long", name = "age", value = "年龄"),
						@ApiImplicitParam(paramType = "query", dataType = "String", name = "order", value = "排序方式(asc、desc)"),
						@ApiImplicitParam(paramType = "query", dataType = "String", name = "orderProp", value = "排序字段"),
						@ApiImplicitParam(paramType = "query", dataType = "String", name = "pageIndex", value = "当前页码"),
						@ApiImplicitParam(paramType = "query", dataType = "String", name = "pageSize", value = "页码大小")})
	public ReturnValue<IPage<StoreUserChildren>> findByAttributes(String unionId,
																  Integer age,
																  String name,
																  @RequestParam(defaultValue = "desc")String order,
																  @RequestParam(defaultValue = "unionId")String orderProp,
																  @RequestParam(defaultValue = "1")Long pageIndex,
																  @RequestParam(defaultValue = "10") Long pageSize){
		QueryWrapper<StoreUserChildren> queryWrapper=new QueryWrapper<>();
		if(unionId != null) {
			queryWrapper.eq("unionId", unionId);
		}
		if(age != null){
			queryWrapper.eq("age",age);
		}
		if(name != null){
			queryWrapper.like("name",name);
		}
		if(order != "desc"){
			queryWrapper.orderByAsc(orderProp);
		}else{
			queryWrapper.orderByDesc(orderProp);
		}
		Page<StoreUserChildren> page =new Page<>(pageIndex,pageSize);

		return new ReturnValue<IPage<StoreUserChildren>>(iStoreUserChildrenService.page(page,queryWrapper));
	}
  • 逻辑删除
    逻辑删除仅仅只是在数据库上做标识状态,实际并没有物理删除数据库数据,执行的是update语句。
    mp 查询和删除时会自动加上 deleted=0
    注意的是 逻辑删除标识字段 实体类上加上注解@TableLogic

application.yml

mybatis-plus:
 global-config:
   db-config:
     logic-delete-value: 1 # 逻辑已删除值(默认为 1)
     logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value="KnowledgeArticle对象", description="knowledge_article information")
public class KnowledgeArticle extends BaseEntity {

   private static final long serialVersionUID = 1L;

   @TableId(value = "articleId", type = IdType.AUTO)
   private Long articleId;

   private String guid;

   @TableField("storeId")
   private Long storeId;

   @TableField("typeId")
   private Long typeId;

   private String title;

   private String author;

   private String summary;

   private String content;

   @TableField("publushTime")
   private LocalDateTime publushTime;

   @TableField("createTime")
   private LocalDateTime createTime;

   @TableField("showAll")
   private String showAll;

   @TableField("showStore")
   private String showStore;

   private String reserver1;

   private String reserver2;

   private String reserver3;

   @TableLogic
   private Integer deleted;

   @TableField(exist = false)
   private String typeName;
}
   @DeleteMapping("delete")
   @ApiOperation(value = "根据id删除文章类型")
   @ApiImplicitParams({@ApiImplicitParam( dataType = "String", name = "id", value = "id", required = true)})
   public ReturnValue<String> removeById(@RequestParam String id){
       iKnowledgeArticleService.removeById(id);
       return new ReturnValue<String>(ErrorCode.ERROR_SUCCESS_DELETE);
   }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇的网友

day day up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值