本次设计操作两个数据库,看结构:
Datasources01 数据源部分:
package com.datasources; import javax.sql.DataSource; 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.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.jdbc.datasource.DataSourceTransactionManager; /** * *类描述:数据源1 *@author: blank *@date: 日期:2018-1-23 时间:下午2:05:16 * */ @Configuration // 注册到springboot容器中 @MapperScan(basePackages="com.test01",sqlSessionFactoryRef = "test1SqlSessionFactory")//引用SqlSessionFactory模板 public class Datasources01 { /** * * @methodDesc: 功能描述:(配置test1数据库,加载数据源1) */ @Bean(name = "test1DataSource") @Primary @ConfigurationProperties(prefix = "spring.datasource.test1")//连接配置 public DataSource testDataSource() { return DataSourceBuilder.create().build();//创建数据源连接 } /** * * @methodDesc: 功能描述:(test1 sql会话工厂) */ @Bean(name = "test1SqlSessionFactory") @Primary public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); //这里是配置扫描.xml文件 // bean.setMapperLocations( // new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml")); return bean.getObject(); } /** * * @methodDesc: 功能描述:(test1 事物管理) */ @Bean(name = "test1TransactionManager") @Primary public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "test1SqlSessionTemplate") public SqlSessionTemplate testSqlSessionTemplate( @Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }Datasources02与01相同,只不过将
@Primary注解去掉,给01加是默认主数据源
model.Users.java
package com.model; public class Users { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }test01.mapper.UserMapper01:
package com.test01.mapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Param; public interface UserMapper01 { // @Select("select * from users where name=#{name}") // Users findUsersByname(@Param("name")String name); @Insert("insert into users values(null,#{name},#{age});") int insertUsers(@Param("name")String name,@Param("age")Integer age); }test01.service.UserService01:
package com.test01.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.test01.mapper.UserMapper01; @Service public class UserService01 { @Autowired private UserMapper01 userMapper1; //事务回滚,如果这部分出错,将会回滚 @Transactional public int addUser(String name,Integer age){ return userMapper1.insertUsers(name, age); } }test02中与01相同:
IndexController中:
package com.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.test01.mapper.UserMapper01; import com.test02.mapper.UserMapper02; @RestController public class IndexController { @Autowired private UserMapper01 userMapper1; @Autowired private UserMapper02 userMapper2; @RequestMapping("/adduser") public String adduser(String name, Integer age) { userMapper1.insertUsers("张钊", 22); userMapper2.insertUsers("张磊", 33); return "success"; } }
APP:
package com.controller; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; //有多个项目的时候,要加入这个注解,用来扫描包,扫描service层和dao层 @ComponentScan(basePackages={"com.controller","com.datasources","com.test01","com.test02"}) //扫描mapper下面的包 //@MapperScan(basePackages="com.mapper") //只能使用者一个注解 @EnableAutoConfiguration public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
application.properties:
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp spring.datasource.test1.driverClassName = com.mysql.jdbc.Driver spring.datasource.test1.url = jdbc:mysql://192.168.10.205:3306/test1 spring.datasource.test1.username = root spring.datasource.test1.password = root spring.datasource.test2.driverClassName = com.mysql.jdbc.Driver spring.datasource.test2.url = jdbc:mysql://192.168.10.205:3306/test2 spring.datasource.test2.username = root spring.datasource.test2.password = rootpom.xml:
<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>com</groupId> <artifactId>SpringBootTest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <!-- 引入继承SpringBoot,实现jar的依赖管理 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Spring-Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <version>2.5</version> </configuration> </plugin> </plugins> </build> </project>
启动后在浏览器输入:http://localhost:8080/adduser
页面成功返回数据,看下数据库;
test1数据库:
test2数据库: