logo 范 · 拾光录
网址收集 关于作者 Github Gitee
杂文随笔4
Hexo博客:基础使用Hexo博客:Next主题Hexo博客:Next进阶使用Hexo博客:Next高级配置
前端编程3
前端基础知识16
UniApp15
Vue框架19
Java编程7
Java基础知识14
SpringBoot31
SpringMVC14
MyBatis8
SpringCloud15
RocketMQ1
MyCat1
数据库4
MySQL6
Redis7
MongoDB10
H21
Java技术栈4
知识整理分布式锁的实现方案MySQL事务MySQL的锁
软件工具箱14
IDEAGitMavenGradleNginx安装Nginx配置JMeter压测OllamaPicGoRustFSVSCodeDockerObsidianObs录制
Linux知识11
树莓派安装及使用ArchLinux:常用软件ArchLinux:基础系统安装ArchLinux:深度优化ArchLInux:图形化界面安装ArchLinux:Nirifrp内网穿透Jar启动脚本Linux常用命令VirtualBox安装CentOSVirtualBox安装Ubuntu
Python编程6
Python基础知识Python语法yolo目标检测OpenCV的使用及树莓派平台condauv
创意设计2
Blender:入门知识UI设计基础知识
AI相关9
Claude CodeHermes AgentOpenAI基本使用OpenAI工具调用OpenAI记忆管理OpenAI推理执行OpenAI开发框架Langchainllama.cpp

引入MyBatis

<!-- 连接mysql的必要依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 整合MyBatis的核心依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

配置数据库信息

spring.datasource.hostel.jdbc-url=xxx
spring.datasource.hostel.username=root
spring.datasource.hostel.password=xxx
spring.datasource.hostel.driver-class-name=com.mysql.cj.jdbc.Driver

hostel为自定义名称,可配置多个。

根据包路径进行使用源配置

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**
 * 自定义数据源
 */
@Configuration
@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")
public class DataSourceHostelConfig {

	@Primary
	@Bean(name = "hostelDataSource")
	@ConfigurationProperties(prefix = "spring.datasource.hostel")
	public DataSource hostelDataSource() {
		return DataSourceBuilder.create().build();
	}

	@Bean(name = "hostelSqlSessionFactory")
	public SqlSessionFactory hostelSqlSessionFactory(@Qualifier("hostelDataSource") DataSource dataSource) throws Exception {
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		// 指定数据源
		bean.setDataSource(dataSource);
		// 注意:自定义的sqlSessionFactory不会加载mybatis配置
		// 指定mapper.xml位置
		bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hostel/*.xml"));
		org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
		// 开启驼峰命名
		configuration.setMapUnderscoreToCamelCase(true);
		// 连接超时时间
		configuration.setDefaultStatementTimeout(15);
		bean.setConfiguration(configuration);
		return bean.getObject();
	}

	@Bean(name = "hostelSqlSessionTemplate")
	public SqlSessionTemplate hostelSqlSessionTemplate(@Qualifier("hostelSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}

}

这里的@ConfigurationProperties(prefix = "spring.datasource.hostel")指定了数据库的连接数据。

@Primary指定了该配置为主库,没有主从可以不加。

@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")根据mapper的所在位置进行不同的数据源使用。

加入druid连接池

<!--连接池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
</dependency>

在创建Datasource时更换:

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**
 * 旅馆数据库
 */
@Configuration
@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")
public class DataSourceHostelConfig {

	@Value("${spring.datasource.hostel.jdbc-url}")
	private String jdbcUrl;

	@Value("${spring.datasource.hostel.username}")
	private String username;

	@Value("${spring.datasource.hostel.password}")
	private String password;

	@Bean(name = "hostelDataSource")
	public DataSource hostelDataSource() {
		DruidDataSource druidDataSource = new DruidDataSource();
		druidDataSource.setUrl(jdbcUrl);
		druidDataSource.setUsername(username);
		druidDataSource.setPassword(password);
		druidDataSource.setKeepAlive(true);
		druidDataSource.setMaxActive(5);
		return druidDataSource;
	}

	@Bean(name = "hostelSqlSessionFactory")
	public SqlSessionFactory hostelSqlSessionFactory(@Qualifier("hostelDataSource") DataSource dataSource) throws Exception {
		SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
		// 指定数据源
		bean.setDataSource(dataSource);
		// 注意:自定义的sqlSessionFactory不会加载mybatis配置
		// 指定mapper.xml位置
		bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hostel/*.xml"));
		org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
		// 开启驼峰命名
		configuration.setMapUnderscoreToCamelCase(true);
		// 连接超时时间
		configuration.setDefaultStatementTimeout(15);
		bean.setConfiguration(configuration);
		return bean.getObject();
	}

	@Bean(name = "hostelSqlSessionTemplate")
	public SqlSessionTemplate hostelSqlSessionTemplate(@Qualifier("hostelSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
		return new SqlSessionTemplate(sqlSessionFactory);
	}

}
引入MyBatis
配置数据库信息
根据包路径进行使用源配置
加入druid连接池