1 整合MyBatis
1.1 依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.49</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
1.2 数据库配置信息
1.3 实体类
1.4 Mapper 类
-
方法1:添加
@Mapper
注解
-
方法2: 启动类指定扫描位置
1.5 映射文件
1.6 单元测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void contextLoads() {
List<User> users = userMapper.findAll();
System.out.println(users);
}
}
-
报错
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.tzb.mapper.UserMapper.findAll
-
发现编译后的结果没有 xml 文件
1.6.1 解决方法1
- 在 resources下逐级创建目录
1.6.2 解决方法2
修改 pom,把 xml打包进去
1.6.3 解决方法3
在 resources 目录下自定义 mapper 目录
2 springboot 整合 MyBatis 多数据源
2.1 数据库配置信息
按住 Alt
进入列编辑模式
2.2 配置类
package com.tzb.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.one")
DataSource dsOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.two")
DataSource dsTwo(){
return DruidDataSourceBuilder.create().build();
}
}
@Configuration
@MapperScan(basePackages = "com.tzb.mapper1",
sqlSessionFactoryRef ="sqlSessionFactory1",
sqlSessionTemplateRef = "sqlSessionTemplate1"
)
public class MyBatisConfigOne {
@Resource(name = "dsOne")
private DataSource dsOne;
@Bean
SqlSessionFactory sqlSessionFactory1(){
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
try {
bean.setDataSource(dsOne);
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
SqlSessionTemplate sqlSessionTemplate1(){
return new SqlSessionTemplate(sqlSessionFactory1());
}
}
@Configuration
@MapperScan(basePackages = "com.tzb.mapper2",
sqlSessionFactoryRef ="sqlSessionFactory2",
sqlSessionTemplateRef = "sqlSessionTemplate2"
)
public class MyBatisConfigTwo {
@Resource(name = "dsTwo")
private DataSource dsTwo;
@Bean
SqlSessionFactory sqlSessionFactory2(){
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
try {
bean.setDataSource(dsTwo);
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
SqlSessionTemplate sqlSessionTemplate2(){
return new SqlSessionTemplate(sqlSessionFactory2());
}
}
2.3 mapper接口
2.4 测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisApplicationTests {
@Autowired
private UserMapper1 userMapper1;
@Autowired
private UserMapper2 userMapper2;
@Test
public void contextLoads() {
List<User> users1 = userMapper1.findAll();
System.out.println(users1);
List<User> users2 = userMapper2.findAll();
System.out.println(users2);
}
}