Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

正确可用版:SpringBoot+Mybatis-plus+Druid 实现配置多数据源(数据库) 前言 此文介绍的是在SpringBoot中使用Mybatis配置多数据源(多个数据库),整合Druid 网上有很多文章,翻了翻,但是都有问题啊,有的是没使用Druid,使用了默认的Hirika,有的是配置文件不给或者给的是Hirika能用的配置,层级不对,所以我自己来记一下 代码 pom文件maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid 阅读详情

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

“清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考”

原文:https://www.bysocket.com/?p=1712

本文提纲
一、多数据源的应用场景
二、运行 springboot-mybatis-mutil-datasource 工程案例
三、springboot-mybatis-mutil-datasource 工程代码配置详解

一、多数据源的应用场景

目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢?
Druid 是 Java 的数据库连接池组件。Druid 能够提供强大的监控和扩展功能。比如可以监控 SQL ,在监控业务可以查询慢查询 SQL 列表等。Druid 核心主要包括三部分:
1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系。
2. DruidDataSource 高效可管理的数据库连接池
3. SQLParser

当业务数据量达到了一定程度,DBA 需要合理配置数据库资源。即配置主库的机器高配置,把核心高频的数据放在主库上;把次要的数据放在从库,低配置。开源节流嘛,就这个意思。把数据放在不同的数据库里,就需要通过不同的数据源进行操作数据。这里我们举个 springboot-mybatis-mutil-datasource 工程案例:
user 用户表在主库 master 上,地址表 city 在从库 cluster 上。下面实现获取 根据用户名获取用户信息,包括从库的地址信息 REST API,那么需要从主库和从库中分别获取数据,并在业务逻辑层组装返回。逻辑如图:

下面就运行这个案例。

 

二、运行 springboot-mybatis-mutil-datasource 工程案例

git clone 下载工程 springboot-learning-example ,项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example。下面开始运行工程步骤(Quick Start):
1.数据库准备
a.创建 cluster 数据库 springbootdb:

1
CREATE DATABASE springbootdb;

b.创建表 city :(因为我喜欢徒步)

1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS `city`;
CREATE TABLE `city` (
` id ` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '城市编号' ,
`province_id` int(10) unsigned NOT NULL COMMENT '省份编号' ,
`city_name` varchar(25) DEFAULT NULL COMMENT '城市名称' ,
`description` varchar(25) DEFAULT NULL COMMENT '描述' ,
PRIMARY KEY (` id `)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

c.插入数据

1
INSERT city VALUES (1 ,1, '温岭市' , 'BYSocket 的家在温岭。' );

然后,再创建一个 master 数据库
a.创建数据库 springbootdb_cluster:

1
CREATE DATABASE springbootdb_cluster;

b.创建表 user :

1
2
3
4
5
6
7
DROP TABLE IF EXISTS `city`;
CREATE TABLE user
(
id INT(10) unsigned PRIMARY KEY NOT NULL COMMENT '用户编号' AUTO_INCREMENT,
user_name VARCHAR(25) COMMENT '用户名称' ,
description VARCHAR(25) COMMENT '描述'
)ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

c.插入数据

1
INSERT user VALUES (1 , '泥瓦匠' , '他有一个小网站 bysocket.com' );

(以上数据库创建无先后顺序)

2. 项目结构介绍
项目结构如下图所示:
org.spring.springboot.config.ds - 配置层,这里是数据源的配置,包括 master 和 cluster 的数据源配置
org.spring.springboot.controller - Controller 层
org.spring.springboot.dao - 数据操作层 DAO,细分了 master 和 cluster 包下的 DAO 操作类
org.spring.springboot.domain - 实体类
org.spring.springboot.service - 业务逻辑层
Application - 应用启动类
application.properties - 应用配置文件,应用启动会自动读取配置

3.改数据库配置
打开 application.properties 文件, 修改相应的主从数据源配置,比如数据源地址、账号、密码等。(如果不是用 MySQL,自行添加连接驱动 pom,然后修改驱动名配置。)

4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:

1
mvn clean install

 

5.运行工程
右键运行 Application 应用启动类(位置:/springboot-learning-example/springboot-mybatis-mutil-datasource/src/main/java/org/spring/springboot/Application.java)的 main 函数,这样就成功启动了 springboot-mybatis-mutil-datasource 案例。

在浏览器打开:
http://localhost:8080/api/user?userName=泥瓦匠
浏览器返回 JSON 结果:

1
2
3
4
5
6
7
8
9
10
11
{
     "id" : 1,
     "userName" : "泥瓦匠" ,
     "description" : "他有一个小网站 bysocket.com" ,
     "city" : {
         "id" : 1,
         "provinceId" : 1,
         "cityName" : "温岭市" ,
         "description" : "BYSocket 的家在温岭。"
     }
}

这里 city 结果体来自 cluster 库,user 结果体来自 master 库。

 

三、springboot-mybatis-mutil-datasource 工程代码配置详解

代码共享在我的 GitHub 上:
https://github.com/JeffLi1993/springboot-learning-example/tree/master/springboot-mybatis-mutil-datasource

首先代码工程结构如下:
org.spring.springboot.config.ds 包包含了多数据源的配置,同样有第三个数据源,按照前几个复制即可
resources/mapper 下面有两个模块,分别是 Mybatis 不同数据源需要扫描的 mapper xml 目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
├── pom.xml
└── src
     └── main
         ├── java
         │   └── org
         │       └── spring
         │           └── springboot
         │               ├── Application.java
         │               ├── config
         │               │   └── ds
         │               │       ├── ClusterDataSourceConfig.java
         │               │       └── MasterDataSourceConfig.java
         │               ├── controller
         │               │   └── UserRestController.java
         │               ├── dao
         │               │   ├── cluster
         │               │   │   └── CityDao.java
         │               │   └── master
         │               │       └── UserDao.java
         │               ├── domain
         │               │   ├── City.java
         │               │   └── User.java
         │               └── service
         │                   ├── UserService.java
         │                   └── impl
         │                       └── UserServiceImpl.java
         └── resources
             ├── application.properties
             └── mapper
                 ├── cluster
                 │   └── CityMapper.xml
                 └── master
                     └── UserMapper.xml

 

1. 依赖 pom.xml
Mybatis 通过 Spring Boot Mybatis Starter 依赖
Druid 是数据库连接池依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version= "1.0" encoding= "UTF-8" ?>
<project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
     <modelVersion>4.0.0< /modelVersion >
 
     <groupId>springboot< /groupId >
     <artifactId>springboot-mybatis-mutil-datasource< /artifactId >
     <version>0.0.1-SNAPSHOT< /version >
     <name>springboot-mybatis-mutil-datasource :: Spring Boot 实现 Mybatis 多数据源配置< /name >
 
     <!-- Spring Boot 启动父依赖 -->
     <parent>
         <groupId>org.springframework.boot< /groupId >
         <artifactId>spring-boot-starter-parent< /artifactId >
         <version>1.5.1.RELEASE< /version >
     < /parent >
 
     <properties>
         <mybatis-spring-boot>1.2.0< /mybatis-spring-boot >
         <mysql-connector>5.1.39< /mysql-connector >
         <druid>1.0.18< /druid >
     < /properties >
 
     <dependencies>
 
         <!-- Spring Boot Web 依赖 -->
         <dependency>
             <groupId>org.springframework.boot< /groupId >
             <artifactId>spring-boot-starter-web< /artifactId >
         < /dependency >
 
         <!-- Spring Boot Test 依赖 -->
         <dependency>
             <groupId>org.springframework.boot< /groupId >
             <artifactId>spring-boot-starter- test < /artifactId >
             <scope> test < /scope >
         < /dependency >
 
         <!-- Spring Boot Mybatis 依赖 -->
         <dependency>
             <groupId>org.mybatis.spring.boot< /groupId >
             <artifactId>mybatis-spring-boot-starter< /artifactId >
             <version>${mybatis-spring-boot}< /version >
         < /dependency >
 
         <!-- MySQL 连接驱动依赖 -->
         <dependency>
             <groupId>mysql< /groupId >
             <artifactId>mysql-connector-java< /artifactId >
             <version>${mysql-connector}< /version >
         < /dependency >
 
         <!-- Druid 数据连接池依赖 -->
         <dependency>
             <groupId>com.alibaba< /groupId >
             <artifactId>druid< /artifactId >
             <version>${druid}< /version >
         < /dependency >
 
         <!-- Junit -->
         <dependency>
             <groupId>junit< /groupId >
             <artifactId>junit< /artifactId >
             <version>4.12< /version >
         < /dependency >
     < /dependencies >
< /project >

2. application.properties 配置两个数据源配置
数据源配置会被数据源数据源配置如下

1
2
3
4
5
6
7
8
9
10
11
## master 数据源配置
master.datasource.url=jdbc:mysql: //localhost :3306 /springbootdb ?useUnicode= true &characterEncoding=utf8
master.datasource.username=root
master.datasource.password=123456
master.datasource.driverClassName=com.mysql.jdbc.Driver
 
## cluster 数据源配置
cluster.datasource.url=jdbc:mysql: //localhost :3306 /springbootdb_cluster ?useUnicode= true &characterEncoding=utf8
cluster.datasource.username=root
cluster.datasource.password=123456
cluster.datasource.driverClassName=com.mysql.jdbc.Driver

3. 数据源配置
多数据源配置的时候注意,必须要有一个主数据源,即 MasterDataSourceConfig 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory" )
public class MasterDataSourceConfig {
 
     // 精确到 master 目录,以便跟其他数据源隔离
     static final String PACKAGE = "org.spring.springboot.dao.master" ;
     static final String MAPPER_LOCATION = "classpath:mapper/master/*.xml" ;
 
     @Value( "${master.datasource.url}" )
     private String url;
 
     @Value( "${master.datasource.username}" )
     private String user;
 
     @Value( "${master.datasource.password}" )
     private String password;
 
     @Value( "${master.datasource.driverClassName}" )
     private String driverClass;
 
     @Bean(name = "masterDataSource" )
     @Primary
     public DataSource masterDataSource() {
         DruidDataSource dataSource = new DruidDataSource();
         dataSource.setDriverClassName(driverClass);
         dataSource.setUrl(url);
         dataSource.setUsername(user);
         dataSource.setPassword(password);
         return dataSource;
     }
 
     @Bean(name = "masterTransactionManager" )
     @Primary
     public DataSourceTransactionManager masterTransactionManager() {
         return new DataSourceTransactionManager(masterDataSource());
     }
 
     @Bean(name = "masterSqlSessionFactory" )
     @Primary
     public SqlSessionFactory masterSqlSessionFactory(@Qualifier( "masterDataSource" ) DataSource masterDataSource)
             throws Exception {
         final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
         sessionFactory.setDataSource(masterDataSource);
         sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                 .getResources(MasterDataSourceConfig.MAPPER_LOCATION));
         return sessionFactory.getObject();
     }
}

@Primary 标志这个 Bean 如果在多个同类 Bean 候选时,该 Bean 优先被考虑。「多数据源配置的时候注意,必须要有一个主数据源,用 @Primary 标志该 Bean」
@MapperScan 扫描 Mapper 接口并容器管理,包路径精确到 master,为了和下面 cluster 数据源做到精确区分
@Value 获取全局配置文件 application.properties 的 kv 配置,并自动装配
sqlSessionFactoryRef 表示定义了 key ,表示一个唯一 SqlSessionFactory 实例

同理可得,从数据源 ClusterDataSourceConfig 配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = ClusterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "clusterSqlSessionFactory" )
public class ClusterDataSourceConfig {
 
     // 精确到 cluster 目录,以便跟其他数据源隔离
     static final String PACKAGE = "org.spring.springboot.dao.cluster" ;
     static final String MAPPER_LOCATION = "classpath:mapper/cluster/*.xml" ;
 
     @Value( "${cluster.datasource.url}" )
     private String url;
 
     @Value( "${cluster.datasource.username}" )
     private String user;
 
     @Value( "${cluster.datasource.password}" )
     private String password;
 
     @Value( "${cluster.datasource.driverClassName}" )
     private String driverClass;
 
     @Bean(name = "clusterDataSource" )
     public DataSource clusterDataSource() {
         DruidDataSource dataSource = new DruidDataSource();
         dataSource.setDriverClassName(driverClass);
         dataSource.setUrl(url);
         dataSource.setUsername(user);
         dataSource.setPassword(password);
         return dataSource;
     }
 
     @Bean(name = "clusterTransactionManager" )
     public DataSourceTransactionManager clusterTransactionManager() {
         return new DataSourceTransactionManager(clusterDataSource());
     }
 
     @Bean(name = "clusterSqlSessionFactory" )
     public SqlSessionFactory clusterSqlSessionFactory(@Qualifier( "clusterDataSource" ) DataSource clusterDataSource)
             throws Exception {
         final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
         sessionFactory.setDataSource(clusterDataSource);
         sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                 .getResources(ClusterDataSourceConfig.MAPPER_LOCATION));
         return sessionFactory.getObject();
     }
}

上面数据配置分别扫描 Mapper 接口,org.spring.springboot.dao.master(对应 xml classpath:mapper/master ) 和 org.spring.springboot.dao.cluster(对应 xml classpath:mapper/cluster ) 包中对应的 UserDAO 和 CityDAO 。
都有 @Mapper 标志为 Mybatis 的并通过容器管理的 Bean。Mybatis 内部会使用反射机制运行去解析相应 SQL。

3.业务层 biz
biz 照常注入了两个 DAO,如同以前一样正常工作。不用关心和指定到具体说明数据源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
  * 用户业务实现层
  *
  * Created by bysocket on 07 /02/2017 .
  */
@Service
public class UserServiceImpl implements UserService {
 
     @Autowired
     private UserDao userDao; // 主数据源
 
     @Autowired
     private CityDao cityDao; // 从数据源
 
     @Override
     public User findByName(String userName) {
         User user = userDao.findByName(userName);
         City city = cityDao.findByName( "温岭市" );
         user.setCity(city);
         return user;
     }
}

四、小结

多数据源适合的场景很多。不同的 DataSource ,不同的 SqlSessionFactory 和 不同的 DAO 层,在业务逻辑层做 整合。总结的架构图如下:

同样,如果实战中,大家遇到什么,或者建议《Spring boot 那些事》还需要一起交流的。请点击留言。

推荐书《奥黛丽·赫本》一本讲女神的故事。

SpringBoot第十九天 - Dao Druid数据源 SpringBoot - DaoDruid 本节学习SpringBoot自定义整合Druid数据源方式以及Druid数据源模块starter的配置。 1. Druid简介 Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的 阅读详情

相关推荐

【项目实战】Spring Boot的数据源配置

在SpringBoot项目中,可以通过配置一个数据源来提供数据的访问和管理。SpringBoot提供了许多数据源的配置方式,如使用Spring Data JPA、Mybatis等框架来配置数据源。

奶爸的编程之路,也就一周冷个三天 2066

SpringBoot项目配置主从数据源

注解在类上或方法上来切换数据源。1、首先添加maven配置。

weixin_42839973的博客 863

Spring Boot(三十四):Spring Boot 整合 Mybatis 实现 Druid 多数据源配置

一、多数据源的应用场景 目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢? Druid 是 Java 的数据库连接池组件。Druid 能够提供强大的监控和扩展功能。比如可以监控 SQL ,在监控业务可以查询慢查询 SQL 列表等。Druid 核心主要包括三部分: 1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系。 2...

u013938578的博客 554

SpringBoot多数据源(主从数据源)配置

????前言 学习springboot配置多数据源,先回顾一下springboot配置单数据源的方式 SpringBoot配置mybatis-mysql数据源 ????主从数据源搭建 项目依赖 本次记录多数据源配置主要是通过druid + mybatis plus + aop的形式实现的,mybatis plus是一个很方便的数据库操作框架,自己也有实现多数据源的jar包,这里没有使用她封装的方法,主要是学习所以是自行实现了一遍简单的多数据源配置和动态切换数据源。 <!-- mybatis-plus多

Confused_的博客 8703

Spring Boot整合MyBatis与Druid实现多数据源配置

在现代企业级Java应用开发中,随着业务规模的扩大和系统复杂度的提升,单一数据源已经无法满足系统的高可用性、性能以及数据隔离等需求。多数据源配置应运而生,旨在通过为不同业务模块或数据访问需求分配独立的数据源,从而实现数据库资源的合理分配与高效利用。多数据源通常适用于以下场景:读写分离:将读操作与写操作分配到不同的数据库实例,提升系统并发能力。数据隔离:不同业务模块使用不同数据库,降低耦合度,提升系统安全性。高可用与灾备:通过配置多个数据源实现故障切换,保障系统稳定性。

weixin_35762258的博客 1028

使用ACOLITE对OLCI影像进行大气校正+批处理

使用ACOLITE对OLCI影像进行大气校正+批处理

mrzhy1的博客 7361

第五节 Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

第五节 Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

2401_89610374的博客 1325

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 459

Spring Boot 整合 Mybatis 实现 Druid 多数据源配置

本文介绍了SpringBoot整合Mybatis和Druid实现多数据源配置的方案。主要内容包括:项目环境搭建(SpringBoot 2.7.x、Mybatis 3.x、Druid 1.2.x)、多数据源配置实现(主从数据源)、动态数据源路由机制、基于AOP的注解式数据源切换、Mybatis多数据源集成配置、事务管理以及Druid监控配置。文章还提供了性能优化建议和常见问题解决方案,适用于读写分离、多租户等需要多数据源的场景,完整代码示例涵盖从数据源配置到业务层实现的全流程。

油墨香^-^的博客 1071

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

5G初始注册流程详解(2)-Registration Request

1:了解注册的本质,5G终端为什么要注册? 2:SUCI,SUPI,5G-GUTI的区别? 3:为什么会有COMPLETE REGISTRATION REQUEST呢?

weixin_53220301的博客 3795

Spring Boot整合MyBatis-Plus与Druid多数据源配置实战

在Java企业级应用开发中,数据库连接池是优化性能、管理资源的基石技术,其核心原理是通过复用已建立的数据库连接,避免频繁创建和销毁带来的开销。Druid作为一款高性能的监控型连接池,不仅提供了这一核心价值,还集成了SQL监控、防火墙等实用功能,成为诊断线上性能问题的利器。结合ORM框架如MyBatis-Plus,可以极大提升数据持久层的开发效率。在实际工程实践中,随着业务复杂度提升,读写分离、分库分表等场景催生了多数据源的需求。本文聚焦于如何将Spring Boot、MyBatis-Plus和Druid连接

weixin_32821533的博客 280

从零到一:华为iMaster NCE-Campus部署中的Euler OS与FusionInsight深度解析

本文深入解析华为iMaster NCE-Campus部署中Euler OS与FusionInsight的关键技术要点,包括RAID配置、网络绑定技术、安装避坑指南及性能调优方案。通过实战经验和详细配置示例,帮助工程师提升部署效率与系统稳定性,确保华为企业级解决方案的高效运行。

f6g7h8i9j的博客 549

spring boot整合mybatis通用mapper实现Druid多数据源

springboot加通用mapper实现Druid多数据源

LMS的专栏 7600

vivado安装空间与依赖要求:入门须知要点

准备安装Vivado时,需重点关注系统空间和依赖环境的配置。结合vivado安装教程,详细说明最低磁盘要求、内存配置及操作系统兼容性,帮助新手快速搭建开发环境,避免常见安装失败问题。

weixin_34725745的博客 1578

试读源码在这里下载

试读文章的源码在这里下载。源码不做任何修改,重点重点重点:为了代码运行不报错,安装matlab 版本为 2021 及以上版本。matlab安装教程大家可以参考这个教程:手把手教你安装matlab软件。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 4306

spring-boot整合mybatis和druid连接池(多数据源)

spring-boot整合mybatis和druid连接池(多数据源) https://blog.youkuaiyun.com/liuxiao723846/article/details/80461071 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/liuxiao723846/article/details/80461071上一篇文章介绍了...

weixin_30835933的博客 178

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4587

mysql通用mapper_spring boot整合mybatis通用mapper实现Druid多数据源

spring boot整合mybatis通用mapper实现Druid多数据源发布时间:2018-05-18 11:00,浏览次数:802, 标签:springbootmybatismapperDruid在以前的项目中用springMVC加原生的mybatis框架使用过多数据源的配置,是用xml配置的。在这次的新项目里面使用到了tk的通用mapper,刚好项目结束,利用空闲时间写了个全注解的多数据...

weixin_39785669的博客 326

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot整合MyBatis-Plus与Druid:构建高效多数据源方案

在Java企业级应用开发中,数据库连接管理与持久层操作是核心基础。连接池技术通过复用数据库连接,有效解决了频繁创建和销毁连接带来的性能开销问题,而ORM框架则通过对象关系映射简化了数据访问层的开发。Druid作为一款功能强大的数据库连接池,不仅提供了高性能的连接管理,其内置的监控功能(如SQL执行时间分布统计)更是运维和性能调优的利器。MyBatis-Plus在MyBatis基础上进行了深度增强,通过通用Mapper和条件构造器等特性,大幅提升了CRUD操作的开发效率。将两者结合,能够为应用提供稳定、高效且

weixin_31421613的博客 237

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Spring Boot 中使用 MyBatis 整合 Druid 多数据源

2017 年 10 月 20 日 Spring Boot 中使用 MyBatis 整合 Druid 多数据源 本文将讲述 spring boot + mybatis + druid 多数据源配置方案。 环境 CentOs7.3 安装 MySQL 5.7.19 二进制版本 Github 代码 代码我已放到 Github ,导入spring...

abc_1114的博客 84

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

spring boot2.0+shiro+mybatis多数据源+druid连接池项目整合

首先感谢纯洁的微笑大神的springboot教程,本项目很多地方都是参考写出,贴出大神自己建立的学习网站http://www.ityouknow.com/spring-boot.html   关于整合    网上关于springboot2.0和shiro+myabtis整合的案例很少,大神的教程也是用jpa编写,jpa很方便,但是还有很多人用mybatis,加之刚学习完mybatis多数据源...

z642385985的博客 3911

spring boot整合mybatis+druid和多数据源外加druid监视sql执行时间

spring boot整合mybatis+druid和多数据源单个数据源pom文件:application.properties文件配置内容单数据代码奉献上多个数据源 整合MyBatis之前,先搭建一个基本的Spring Boot项目开启Spring Boot 单个数据源 pom文件: <!--引入druid数据源 --> <dependency> <groupId>com.alibaba</groupId> &l

d528071941的博客 2749
上一篇: Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例
下一篇: Spring Boot 整合 Redis 实现缓存操作
L_小乌鸦
博客等级 码龄11年 75粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值