一、环境配置
环境很简单,下面开始整合。
二、代码整合
新建一个Springboot项目名字叫做SpringbootMybatisMutil,开始下面的操作。
第一步:添加依赖
<dependencies> <!--springboot开发web项目的起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 加载mybatis整合springboot --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- MySQL的jdbc驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> </dependencies>
第二步:修改属性文件
#数据库1的配置 spring.datasource.test1.driver-class-name = com.mysql.jdbc.Driver spring.datasource.test1.jdbc-url = jdbc:mysql://localhost:3306/uav ?useUnicode=true&characterEncoding=utf-8&useSSL=false spring.datasource.test1.username = root spring.datasource.test1.password = root #数据库2的配置 spring.datasource.test2.driver-class-name = com.mysql.jdbc.Driver spring.datasource.test2.jdbc-url = jdbc:mysql://localhost:3306/uav2 ?useUnicode=true&characterEncoding=utf-8&useSSL=false #上面的这一行在uav后面添加,代码太长我换成了两行, spring.datasource.test2.username = root spring.datasource.test2.password = root #mybatis依赖 mybatis.type-aliases-package = com.fdd.bean
第三步:新建一个bean包,创建Person类
@Mapper public class Person implements Serializable { private Integer id ; private String name; private Integer age; public Person() { } public Person(Integer id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } //getter和setter方法 //toString方法 }
第四步:新建config包,创建DataSourceConfig1l类
@Configuration //注册到springboot 容器中 @MapperScan(basePackages = "com.fdd.mapper1", sqlSessionTemplateRef = "test1SqlSessionTemplate") public class DataSourceConfig1 { @Bean(name = "test1DataSource") @Primary @ConfigurationProperties(prefix = "spring.datasource.test1") public DataSource testDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean(name = "test1SqlSessionFactory") 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) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
再建一个DataSourceConfig2类,里面的代码和DataSourceConfig1的一样,把里面的1换成2即可。
第五步:新建mapper1包,创建PersonMapper类
@Mapper @Repository public interface PersonMapper { //增加一个Person @Insert("insert into person(id,name,age)values(#{id},#{name},#{age})") int insert(Person person); //删除一个Person @Delete("delete from person where id = #{id}") int deleteByPrimaryKey(Integer id); //更改一个Person @Update("update person set name =#{name},age=#{age} where id=#{id}") int updateByPrimaryKey(Integer id); //查询一个Person @Select("select id,name ,age from person where id = #{id}") Person selectByPrimaryKey(Integer id); //查询所有的Person @Select("select id,name,age from person") List<Person> selectAllPerson(); }
在这里使用注解的形式进行整合。
第六步:新建mapper2包,创建UserMapper类
@Mapper @Repository public interface UserMapper { //增加一个Person @Insert("insert into person(id,name,age)values(#{id},#{name},#{age})") int insert(Person person); //删除一个Person @Delete("delete from person where id = #{id}") int deleteByPrimaryKey(Integer id); //更改一个Person @Update("update person set name =#{name},age=#{age} where id=#{id}") int updateByPrimaryKey(Integer id); //查询一个Person @Select("select id,name ,age from person where id = #{id}") Person selectByPrimaryKey(Integer id); //查询所有的Person @Select("select id,name,age from person") List<Person> selectAllPerson(); }
内容和PersonMapper是一样的,但是我在测试的时候出现了一些bean重复定义的错误,所以没有使用Person2Mapper这种方法进行命名。
第七步:新建controller包,创建MyController类
@RestController public class MyController { @Autowired private PersonMapper personService; @Autowired private UserMapper personService2; @GetMapping("/add") public String test1(){ Person person = new Person(); person.setId(14); person.setName("java的架构师技术栈"); person.setAge(18); int result = personService.insert(person); int result2 = personService2.insert(person); System.out.println("插入的结果是:"+result+" "+result2); return "插入的结果是:"+result+" "+result2; } }
这里只测试了插入的方法,当然如果你需要service层,自行添加就好了。不过对于基本的增删改查功能,mapper足够。
OK,这个就是多数据源的整合,在我自己的电脑亲测成功。