-
实例需求:输出库test1中表user的记录和库test2中表user的记录总和
-
技术要点
- springboot集成mybatis配置:
注解型的,配置文件去除mybatis相关配置
spring.datasource.test1.driverClassName = com.mysql.jdbc.Driver
spring.datasource.test1.url = jdbc:mysql://192.168.32.128:3306/test1?useUnicode=true&characterEncoding=utf-8
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.32.128:3306/test2?useUnicode=true&characterEncoding=utf-8
spring.datasource.test2.username = root
spring.datasource.test2.password = root
- 多数据源实现:
1)配置需要扫描的mapper接口
@MapperScan(basePackages = "com.lm.mapper.test1", sqlSessionTemplateRef = "test1SqlSessionTemplate")
2)定义datasource,以及已application.properties配置文件数据源对应的名称
@Primary,当多个数据源时,需要定义一个主数据源,即优先考虑被注解的对象注入
@Bean(name = "test1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.test1")
@Primary
相对xml型的多数据源,去除配置数据源对应的myabtis中mapper.xml路径
/**
* test1数据源
*
* @author liangming.deng
* @date 2017年6月30日
*
*/
@Configuration
@MapperScan(basePackages = "com.lm.mapper.test1", sqlSessionTemplateRef = "test1SqlSessionTemplate")
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) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
- 使用mybatis注解对Mapper接口进行开发:
/**
* mybatis中mapper接口
* @author liangming.deng
* @date 2017年6月21日
*
*/
public interface User1Mapper {
@Select("select * from user")
@Results({
@Result(id=true,property="id",column="id"),
@Result(property="userName",column="userName"),
@Result(property="nickName",column="nickName"),
@Result(property="passWord",column="passWord"),
@Result(property="email",column="email"),
@Result(property="regTime",column="regTime"),
@Result(property="sexEnums",column="sex",javaType=SexEnums.class)})
List<UserEntity> getAll();
@Select("select * from user where id=#{id}")
@Results({
@Result(id=true,property="id",column="id"),
@Result(property="userName",column="userName"),
@Result(property="nickName",column="nickName"),
@Result(property="passWord",column="passWord"),
@Result(property="email",column="email"),
@Result(property="regTime",column="regTime"),
@Result(property="sexEnums",column="sex",javaType=SexEnums.class)})
UserEntity getUserById(Long id);
@Insert("INSERT INTO user(userName,nickName,passWord,email,regTime,sex) "
+ "VALUES(#{userName}, #{nickName}, #{passWord}, #{email}, #{regTime}, #{sex}) ")
void insert(UserEntity user);
@Update("UPDATE user SET userName=#{userName},nickName=#{nickName} where id=#{id}")
void update(UserEntity user);
@Delete("DELETE FROM user where id=#{id}")
void delete(Long id);
}
- 进行controller层的开发:注入相应的Mapper接口进行操作