一、集成MyBatis
- MyBatis的集成是集成项目必须要做的工作 , 在集成MyBatis之前需要先集成DataSource,SpringBoot中提供了DataSource自动集成方案,让配置更简单,针对于MyBatis的集成也只需要简单几步配置即 可。
1.操作步骤
- 导入依赖
- 配置DataSource
- 完成基本组件创建:domain ,mapper映射器,mapper.xml映射文件,service,table
- 配置MyBatis
- 测试
1.1.导入依赖
连接池,mysql驱动,以及MyBatis包都导入进来,连接池选择阿里的Druid
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis jar包-->
<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>
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
</dependencies>
1.2.手动配置方式 - 不推荐
- 手动配置四个属性
jdbc:
username: root
password: 123456
url: jdbc:mysql:///ssm
driver-class-name: com.mysql.jdbc.Driver
配置类中定义DataSource
@SpringBootApplication
public class ApplicationConfig {
//手动配置
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
public static void main(String[] args) {
SpringApplication.run(ApplicationConfig.class, args);
}
}
1.3.自动配置
省略domain、mapper、service层
application.yml配置:
#配置DataSource
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql:///springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
#配置mybatis
mybatis:
#sql:xml文件
mapper-locations: classpath:cn/itsource/mapper/*.xml
#配置别名
type-aliases-package: cn.itsource.domain
server:
port: 8080
ApplicationConfig配置类
/**
* @MapperScan("cn.itsource.mapper"):映射器的自动扫描
*/
@SpringBootApplication
@MapperScan("cn.itsource.mapper")
public class ApplicationConfig {
public static void main(String[] args) {
SpringApplication.run(ApplicationConfig.class,args);
}
}
二、集成事务
- 在Spring中我们可以使用注解式事务配置,也可以使用xml方式进行事务配置,在SpringBoot同样可以使用这两种方式,只是SpringBoot推荐使用注解进行编程,所以我们这里主要采用注解的方式配置事 务。
2.1.注解是配置事务
开启事务管理器==
- 导入了MyBatis的依赖之后,事务管理器就已经存在,我们只需要在配置类开启事务管理即可
/**
* @MapperScan("cn.itsource.mapper"):映射器的自动扫描
*
* @EnableTransactionManagement:开启事务管理
*/
@SpringBootApplication
@MapperScan("cn.itsource.mapper")
@EnableTransactionManagement
public class ApplicationConfig {
public static void main(String[] args) {
SpringApplication.run(ApplicationConfig.class,args);
}
}
在service打事务标签(@Transactional赋予service有事务的功能)
@Service
@Transactional
public class EmployeeServiceImpl implements IEmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
@Transactional(readOnly = true)
@Override
public List<Employee> findAll() {
return employeeMapper.findAll();
}
}
2.2.xml配置事务
2.2.1. .导入AOP的依赖
<!--aop依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.2.2.配置事务xml
<!-- 配置事物管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<aop:config>
<aop:pointcut expression="execution(* cn.itsource.web.controller.service..*.*(..))" id="coreServicePointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="coreServicePointcut"/>
</aop:config> <!-- aop应用事务管理 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="select*" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
2.2.4.配置类导入xml配置
@ImportResource("classpath:applicationContext-service.xml")
public class ApplicationConfig{}