mybatis-spring-boot-starter配置mybatis的插件(Interceptor)

记录一下mybatis-spring-boot-starter配置mybatis插件.
以前使用mybatis的自定义插件的时候都是使用xml的配置形式来配置,现在使用starter的时候突然一下不知道怎么配置了,这里记录一下怎么配置mybatis的插件。

参考链接

spring boot 中如何设置mybatis的插件

使用starter

现在使用springboot项目引入组件基本都是使用starter的形式来引用了。

 <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

mybatis-spring-boot-autoconfigure的使用手册

开始以为使用starter加载插件应该也是在配置文件里面配置,找到一个属性是这样的,有一个这样的属性,这个interceptors是一个集合,点击想对应的方法看源码对应是get方法
在这里插入图片描述
mybatis.configuration.interceptors对应的方法是这个,这是一个get方法,一般是设置属性都是对应的set方法,所以这里如果配置了之后是启动不起来的,会报类型转换错误。

  public List<Interceptor> getInterceptors() {
    return interceptorChain.getInterceptors();
  }

正确的使用方法

文档上面的介绍是这样的,只要把插件拦截器配置成一个bean就可以了,mybatis-starter会自动加载的。
在这里插入图片描述

代码

定义一个Configuration,这个Configuration会被springboot加载到就可以的,SqlCostInterceptor就是自己写大插件拦截器。

package com.madman.springbootdemo.mybatisInterceptor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfiguration {
    @Bean
    SqlCostInterceptor myInterceptor() {
        return new  SqlCostInterceptor();
    }
}

使用ConfigurationCustomizer来自定义加载

这个可以参考最上面那个链接,就是实现这个接口的方法,然后把他加载成bean就可以。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 添加 mybatis-plus 依赖 ```xml <dependency> <groupId>com.baomidou.mybatisplus</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.2</version> </dependency> ``` 2. 配置数据源 ```yml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatisplus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: root ``` 3. 配置 mybatis-plus ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { @Autowired private DataSource dataSource; /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); // 设置方言 paginationInterceptor.setDbType(DbType.MYSQL); return paginationInterceptor; } /** * mybatis-plus SQL执行效率插件【生产环境可以关闭】 */ @Bean @Profile({"dev", "test"}) // 设置 dev test 环境开启 public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); performanceInterceptor.setMaxTime(1000); // SQL执行最大时长,超过自动停止运行,有助于发现问题。 performanceInterceptor.setFormat(true); // SQL是否格式化,默认false。 return performanceInterceptor; } @Bean public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() { MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // 设置mapper文件扫描路径 sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml")); // 设置mybatis配置文件路径 sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml")); // 设置分页插件和SQL执行效率插件 sessionFactory.setPlugins(new Interceptor[]{paginationInterceptor(), performanceInterceptor()}); return sessionFactory; } } ``` 4. 配置实体类和 Mapper ```java @Data public class User { private Long id; private String name; private Integer age; private String email; private Date createTime; private Date updateTime; } @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 5. 使用示例 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> list() { return userMapper.selectList(null); } @Override public User getById(Long id) { return userMapper.selectById(id); } @Override public boolean save(User user) { return userMapper.insert(user) > 0; } @Override public boolean update(User user) { return userMapper.updateById(user) > 0; } @Override public boolean removeById(Long id) { return userMapper.deleteById(id) > 0; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值