MyBatis-puls&druid数据源

MyBatis-Plus 是 MyBatis 的增强工具,主要用于简化数据库操作和提升开发效率。Druid 是阿里巴巴开源的数据库连接池组件,提供了高效的数据库连接管理和监控功能。将这两者结合使用可以更好地管理和操作数据库。以下是 MyBatis-Plus 和 Druid 数据源的总结:

MyBatis-Plus

1. 主要特点:

  • 简化操作: MyBatis-Plus 提供了很多常用的 CRUD 操作的封装,减少了大量的重复代码。
  • 自动生成 SQL: 提供了基于注解和 XML 配置的 SQL 自动生成能力。
  • 分页插件: 内置分页插件,支持多种数据库分页方式,使用方便。
  • 代码生成器: 支持根据数据库表生成对应的实体类、Mapper 接口、XML 配置等代码。

2. 核心功能:

  • Wrapper 查询条件构造器: 提供了灵活的查询条件构造功能。
  • 乐观锁插件: 支持乐观锁机制,避免并发更新问题。
  • 逻辑删除插件: 支持逻辑删除功能,通过标记字段实现删除记录但保留数据。

Druid 数据源

1. 主要特点:

  • 高性能: 提供高效的连接池管理,优化了连接的获取和释放速度。
  • 监控功能: 提供了详细的数据库连接监控功能,可以监控 SQL 执行情况、连接池状态等。
  • 防火墙功能: 内置 SQL 防火墙功能,可以防止 SQL 注入等安全问题。
  • 灵活配置: 提供丰富的配置选项,适配各种数据库和应用场景。

2. 核心功能:

  • 连接池管理: 提供了强大的连接池管理功能,支持连接池的动态调整。
  • SQL 监控: 提供 SQL 执行的统计和监控功能,帮助优化数据库性能。
  • 扩展性: 支持插件机制,可以通过扩展插件来实现自定义功能。

集成 MyBatis-Plus 和 Druid

1. 配置步骤:

  • 引入依赖: 在 pom.xml 中添加 MyBatis-Plus 和 Druid 的依赖。
  • 配置数据源: 在 application.yml 或 application.properties 中配置 Druid 数据源相关属性。
  • 配置 MyBatis-Plus: 在配置类中启用 MyBatis-Plus 功能,并配置相应的 Mapper 扫描路径。
  • 连接池设置: 设置 Druid 数据源的相关属性,如连接池大小、最大连接数等。

2. 示例配置:

3. 注意事项:

  • 性能调优: 根据实际应用场景调整 Druid 数据源的连接池配置,以优化性能。
  • 安全性: 配置 SQL 防火墙和监控功能,以提高系统的安全性和稳定性。
  • 代码生成: 使用 MyBatis-Plus 的代码生成器可以加快开发进程,但生成的代码应根据实际需求进行调整。

结合 MyBatis-Plus 和 Druid,可以大幅度提高开发效率,同时保持高效的数据库连接管理和良好的系统性能。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在pom.xml中添加依赖,如下: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatis-plus.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.6</version> </dependency> ``` 然后,需要在application.yml中配置Druid数据源Mybatis-plus的配置,如下: ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: root druid: max-active: 20 initial-size: 1 max-wait: 60000 min-idle: 1 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false mybatis-plus: mapper-locations: classpath:/mapper/*.xml global-config: db-config: id-type: auto field-strategy: not_empty table-prefix: t_ logic-delete-value: 1 logic-not-delete-value: 0 configuration: map-underscore-to-camel-case: true ``` 接着,我们需要创建一个数据源切换的工具类,如下: ```java public class DynamicDataSourceContextHolder { private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>(); public static void setDataSourceType(String dataSourceType) { CONTEXT_HOLDER.set(dataSourceType); } public static String getDataSourceType() { return CONTEXT_HOLDER.get(); } public static void clearDataSourceType() { CONTEXT_HOLDER.remove(); } } ``` 然后,我们需要创建一个切面,用来在方法执行前切换数据源,如下: ```java @Component @Aspect public class DynamicDataSourceAspect { @Pointcut("@annotation(com.example.demo.annotation.DataSource)") public void dataSourcePointCut() {} @Around("dataSourcePointCut()") public Object around(ProceedingJoinPoint point) throws Throwable { MethodSignature signature = (MethodSignature) point.getSignature(); DataSource dataSource = signature.getMethod().getAnnotation(DataSource.class); if (dataSource == null) { DynamicDataSourceContextHolder.setDataSourceType("db1"); } else { DynamicDataSourceContextHolder.setDataSourceType(dataSource.value()); } try { return point.proceed(); } finally { DynamicDataSourceContextHolder.clearDataSourceType(); } } } ``` 在需要使用不同数据源的方法上,我们可以使用@DataSource注解来指定数据源,如下: ```java @DataSource("db2") public List<User> selectUserList() { return userMapper.selectList(null); } ``` 最后,我们需要在配置类中配置多个数据源,如下: ```java @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties("spring.datasource.druid.db1") public DataSource db1() { return DruidDataSourceBuilder.create().build(); } @Bean @ConfigurationProperties("spring.datasource.druid.db2") public DataSource db2() { return DruidDataSourceBuilder.create().build(); } @Bean @Primary public DataSource dataSource(DataSource db1, DataSource db2) { Map<Object, Object> targetDataSources = new HashMap<>(); targetDataSources.put("db1", db1); targetDataSources.put("db2", db2); DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(); dataSource.setTargetDataSources(targetDataSources); dataSource.setDefaultTargetDataSource(db1); return dataSource; } } ``` 以上就是Mybatis-plus切换Druid数据源的完整代码和配置文件配置。其中,DynamicRoutingDataSource是动态数据源的实现类,需要自行实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值