企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
#### 1.首先pom.xml配置文件 ~~~ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- 测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- web组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- mysql依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- springboot 集成lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> ~~~ #### 2.创建两个数据库test01和test02,一个数据库呢对应一个数据源这时候就不能使用默认的数据源了。 test1 user1 test2 user2 #### 3.说下多数据源:例如公司分为两个数据库,一个数据库专门存放共同的配置文件,一个数据库垂直业务数据库,垂直是根据业务划分的,在一个项目中有多个数据源指不同库jdbc连接,多数据源划分可以分包划分(业务)、注解方式划分。 #### 4.现在application.properties配置文件中写这两个数据源,注意前面配置的名字要小心: ~~~ spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/test01 spring.datasource.test1.username=root spring.datasource.test1.password=123456 spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/test02 spring.datasource.test2.username=root spring.datasource.test2.password=123456 spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver ~~~ #### 5.创建两个包test01和test02,然后每个包里面包含mapper、service,以test01包下的文件为例,test02包下的一样只需要把1改为2. ~~~ UserMapperTest01.java: @Mapper public interface UserMapperTest01 { @Select("select * from user where name=#{name}") User findByName(@Param("name")String name); @Insert("insert into user(name,age) values(#{name},#{age})") int insert(@Param("name")String name,@Param("age")Integer age); } ~~~ UserServiceTest01.java: ~~~ @Service public class UserServiceTest01 { @Autowired private UserMapperTest01 userMapperTest01; public int insertUser(String name,Integer age) { int insertUserResult=userMapperTest01.insert(name, age); int i=1/age; System.out.println(insertUserResult); //怎么验证事务开启成功 return insertUserResult; } } ~~~ #### 6.创建两个datasource的配置文件,DataSource1Config.java和DataSource2Config.java,以1为例,2一样只需要把 1改为2. ~~~ @Configuration @MapperScan(basePackages="com.itmayiedu.test01",sqlSessionFactoryRef="test1SqlSessionFactory") public class DataSource1Config { @Bean(name="test1DataSource") @ConfigurationProperties(prefix="spring.datasource.test1") @Primary public DataSource testDataSource() { return DataSourceBuilder.create().build(); } @Bean(name="test1SqlSessionFactory") @Primary public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource")DataSource dataSource) throws Exception { SqlSessionFactoryBean bean=new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Bean(name="test1TransactionManager") @Primary public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource")DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name="test1SqlSessionTemplate") @Primary public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory")SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } ~~~ #### 7.Controller层: ~~~ /** 多数据源测试 */ @RestController public class MybatisMultiDataSourceController { @Autowired private UserServiceTest01 userServiceTest01; @Autowired private UserServiceTest02 userServiceTest02; @RequestMapping("/insertUserTest01") public Integer insertUserTest1(String name,Integer age) { return userServiceTest01.insertUser(name, age); } @RequestMapping("/insertUserTest02") public Integer insertUserTest2(String name,Integer age) { return userServiceTest02.insertUser(name, age); } } ~~~ #### 8.启动类: ~~~ @SpringBootApplication //@MapperScan(basePackages= {"com.itmayiedu.test01.mapper"}) public class MyBatisApp01 { public static void main(String[] args) { SpringApplication.run(MyBatisApp01.class,args); } ~~~