11.框架MyBatis-Plus

一、基本概念

        MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

        导入依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.2</version>
</dependency>

二、配置

        MP配置需要覆盖MyBatis配置,具体配置查看使用配置 | MyBatis-Plus

@Bean//MP配置
public SqlSessionFactory mybatisSqlSessionFactory(DataSource dataSource) throws Exception {
    MybatisSqlSessionFactoryBean factory=new MybatisSqlSessionFactoryBean();
    factory.setConfiguration(new MybatisConfiguration());
    factory.setGlobalConfig(new GlobalConfig());
    factory.setDataSource(dataSource);
    return factory.getObject();
}

三、CRUD接口

        通用 CRUD 封装 BaseMapper 接口,为 MP 启动时自动解析实体表关系映射转换为 MyBatis 内部对象注入容器。

@Mapper
public interface BookMapper extends BaseMapper<Book> {}

        通用 Service CRUD 封装 IService 接口,进一步封装 CRUD 采用 get 查询单行、list 查询集合、page 分页、remove 删除、save 添加、update 更新前缀命名方式区分 Mapper 层避免混淆。

public interface BookService extends IService<Book> {}

@Service
public class BookServiceImp extends ServiceImpl<BookMapper,Book> implements BookService {}

        实体类只需继承 Model 类即可进行强大的 CRUD 操作,需要项目中已注入对应实体的BaseMapper。

@Component
public class Book extends Model<Book> {}

四、注解

        @TableName:实体类标注,标识实体类对应的表。

        @TableId:属性标注,标识主键属性。

        @TableField:属性标注,标识字段属性。

        @TableLogic:属性标注,标识逻辑删除属性。

        其他注解查看:注解 | MyBatis-Plus

五、条件构造器

        AbstractWrapper:QueryWrapper(LambdaQueryWrapper) 和UpdateWrapper (LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。

        QueryWrapper:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取。

        UpdateWrapper:承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取。

        具体构造方法查看:条件构造器 | MyBatis-Plus

六、插件

        MybatisPlusInterceptor:该插件是核心插件,目前代理了 Executor#query、Executor#update 和 StatementHandler#prepare 方法。

目前已有的功能:

  • 自动分页: PaginationInnerInterceptor
  • 多租户: TenantLineInnerInterceptor
  • 动态表名: DynamicTableNameInnerInterceptor
  • 乐观锁: OptimisticLockerInnerInterceptor
  • sql 性能规范: IllegalSQLInnerInterceptor
  • 防止全表更新与删除: BlockAttackInnerInterceptor
@Bean//插件
public MybatisPlusInterceptor mybatisPlusInterceptor(){
    MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
}

        具体插件使用查看:插件主体 | MyBatis-Plus

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值