请注意这里添加的数据库连接池依赖是druid-spring-boot-starter 。druid-spring-boot-starter可以帮助开发者在SpringBoot项目中轻松集成Druid数据库连接池和监控 。
第三步,配置数据库连接 。在application.properties配置文件中配置多个数据源的信息:
# 数据源1spring.datasource.one.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.one.url=jdbc:mysql://127.0.0.1:3306/mybatisone?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCspring.datasource.one.username=rootspring.datasource.one.password=1234# 数据源2spring.datasource.two.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.two.url=jdbc:mysql://127.0.0.1:3306/mybatistwo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCspring.datasource.two.username=rootspring.datasource.two.password=1234这里配置了两个数据源,主要区别是数据库不同,其他都是一样的 。
第四步,配置数据源 。新建一个config包,并在里面创建一个DataSourceConfig类,用于配置数据源,这样就可以根据application.properties文件来生成对应的DataSource 。里面的代码为:
@Configurationpublic class DataSourceConfig {@Bean@ConfigurationProperties("spring.datasource.one")public DataSource dsOne(){return DruidDataSourceBuilder.create().build();}@Bean@ConfigurationProperties("spring.datasource.two")public DataSource dsTwo(){return DruidDataSourceBuilder.create().build();}}简单解释一下上述代码的含义:
- 请注意DataSource是javax.sql.DataSource包内的;
- DataSourceConfig类中提供了两个数据源:dsOne和dsTwo,默认的方法名就是实例名 。
- @ConfigurationProperties注解表示使用不同前缀的配置文件来创建不同的DataSource实例 。
@Configuration@MapperScan(value = https://www.isolves.com/it/cxkf/kj/2022-05-27/"com.envy.mybatismorespringboot.mapper1",sqlSessionFactoryRef = "sqlSessionFactoryBean1")public class MybatisConfigOne {@Autowired@Qualifier("dsOne")DataSource dsOne;@BeanSqlSessionFactory sqlSessionFactoryBean1() throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dsOne);return factoryBean.getObject();}@BeanSqlSessionTemplate sqlSessionTemplate1() throws Exception {return new SqlSessionTemplate(sqlSessionFactoryBean1());}}@Configuration注解表明这个类是一个配置类,@MapperScan注解用于指名包的扫描路径,即mapper接口所在的位置 。同时使用sqlSessionFactoryRef来指定该位置下的mapper将使用SqlSessionFactory实例 。然后定义了一个sqlSessionFactoryBean1方法用于返回一个SqlSessionFactory对象,在这个方法中通过factoryBean.setDataSource方法将DataSource给注入进去,请注意这里创建的SqlSessionFactory实例,其实也就是@MapperScan注解中sqlSessionFactoryRef参数指定的实例 。最后提供了一个sqlSessionTemplate1方法,该方法用于返回一个SqlSessionTemplate实例,这是一个线程安全类,主要用来管理Mybatis中的SqlSession操作 。MybatisConfigTwo中的代码与前面MybatisConfigOne中的差不多,这里仅仅附上代码,就不做多解释:
@Configuration@MapperScan(value = https://www.isolves.com/it/cxkf/kj/2022-05-27/"com.envy.mybatismorespringboot.mapper2",sqlSessionFactoryRef = "sqlSessionFactoryBean2")public class MybatisConfigTwo {@Autowired@Qualifier("dsTwo")DataSource dsTwo;@Beanpublic SqlSessionFactory sqlSessionFactoryBean2() throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dsTwo);return factoryBean.getObject();}@Beanpublic SqlSessionTemplate sqlSessionTemplate2() throws Exception {return new SqlSessionTemplate(sqlSessionFactoryBean2());}}第六步,创建Book实体类 。新建pojo包,并在里面创建Book实体类,里面的代码为:public class Book {private Integer id;private String name;private String author;//getter、setter和toString方法}第七步,创建数据库访问层 。新建两个mapper包:mapper1和mapper2,并在里面新建对应的mapper接口和xml文件 。其中mapper1包内的BookMapper.java文件中的代码为:@Component@Mapperpublic interface BookMapper {List<Book> getAllBooks();}mapper1包内的BookMapper.xml文件中的代码为:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.envy.mybatismorespringboot.mapper1.BookMapper"><select id="getAllBooks" resultType="com.envy.mybatismorespringboot.pojo.Book">select * from book</select></mapper>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- centos8.0配置静态IP详解及永久关闭防火墙
- 大年初一拜年原来这么多讲究,千万别错了!
- 魅族|曾多次跳票:魅族PANDAER 40W冰能磁吸超充背夹终于来了
- 银河系中心黑洞的首张照片公布,你对黑洞了解多少?
- 深圳|多地发“亿级”消费券后深圳再加码:发3000万红包 人人可领!
- 我多想再见你哪怕匆匆一眼就别离?我多想再见你一面哪怕匆匆一眼都可以
- 防治乳腺增生药膳
- 1.5匹空调是多少瓦?
- 描写大海的诗句有哪些最好多一些?描写大海的诗句有哪些最好多一些
- 橄榄油里有许多絮状物怎么消除 橄榄油里面有
