Spring Boot 学习笔记4——结合Mybatis访问数据库及事务控制
2017-12-05 17:58
1006 查看
spring boot提供的数据库访问(通过JdbcTemplate)可看Spring Cloud学习笔记3——配置中心
码云地址:https://gitee.com/wudiyong/ConfigServer.git
结合Mybatis只需以下几个配置
1、加入mybatis依赖
2、application.properties
1)配置sql xml文件的路径
2)mybatis配置文件的路径及文件名,里面可以指定sql xml文件的位置、对象的别名等,如果没有什么需要配置的,可以不要该配置项
配置事务控制
spring boot开启事务非常简单,不管是否使用mybatis,只需两步:
1、在入口类前面加上注解@EnableTransactionManagement
2、在需要使用事务的方法外面加上注解@Transactional
大多数情况下使用默认配置即可,如果对事务需要做特殊处理,可以修改@Transactional的属性值或在入口类处定义使用不同的PlatformTransactionManager。
@Transactional有如下属性可以设置:
readOnly默认等于false;
rollbackFor默认是Class<? extends Throwable>[] rollbackFor() default {},也就是所有异常都回滚;
noRollbackFor默认是Class<? extends Throwable>[] noRollbackFor() default {},也就是说所有异常都回滚;
在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,如果两个依赖都加入,则可以在入口类处指定用哪个PlatformTransactionManager。
首先入口类要实现接口TransactionManagementConfigurer
然后加入如下代码:
// 创建事务管理器1,DataSource我们在连接数据库的时候就已经自定义了,这里会自动注入我们自定义的DataSource
@Bean(name = "txManager1")
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
// 创建事务管理器2
@Bean(name = "txManager2")
public PlatformTransactionManager txManager2(EntityManagerFactory factory) {
return new JpaTransactionManager(factory);
}
// 实现接口 TransactionManagementConfigurer 方法,其返回值代表在拥有多个事务管理器的情况下默认使用的事务管理器
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return txManager2;
}
码云地址:https://gitee.com/wudiyong/ConfigServer.git
结合Mybatis只需以下几个配置
1、加入mybatis依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency>
2、application.properties
1)配置sql xml文件的路径
2)mybatis配置文件的路径及文件名,里面可以指定sql xml文件的位置、对象的别名等,如果没有什么需要配置的,可以不要该配置项
mybatis.mapper-locations=classpath:mybatis/mapper/*Mapper.xml #可以不要下面的配置 mybatis.config-locations=classpath:mybatis/mybatis-config.xml3、mybatis-config.xml文件位于src/main/resources/mybatis文件夹中,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="integer" type="java.lang.Integer" /> <typeAlias alias="map" type="java.util.Map" /> <!-- 更多自定义的类,alias是别名 = --> </typeAliases> </configuration>4、sql xml文件放在src/main/resources/mybatis/mapper处,文件名一般为xxxMapper.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ConfigServer.mapper.ConfigInfoMapper"><!--指定该xml文件对应哪个mapper接口--> <resultMap id="BaseResultMap" type="com.ConfigServer.entity.NameValuePair"> <result column="key" property="name" jdbcType="VARCHAR" /> <result column="value" property="value" jdbcType="VARCHAR" /> </resultMap> <sql id="Base_Column_List"> key,value </sql> <select id="getConfigInfo" parameterType="map" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List" /> FROM config_info t where application = #{application , jdbcType=VARCHAR} </select> </mapper>5、mapper接口要用@Mapper注解,ConfigInfoMapper.java文件内容如下:
@Mapper public interface ConfigInfoMapper { public List<NameValuePair> getConfigInfo(Map<String, Object> params); }至此,mybatis已配置完成,可以通过mybatis访问数据库了,在需要使用的地方通过@Autowired注入xxxMapper接口即可,如:
@Autowired private ConfigInfoMapper configInfoMapper;
配置事务控制
spring boot开启事务非常简单,不管是否使用mybatis,只需两步:
1、在入口类前面加上注解@EnableTransactionManagement
2、在需要使用事务的方法外面加上注解@Transactional
大多数情况下使用默认配置即可,如果对事务需要做特殊处理,可以修改@Transactional的属性值或在入口类处定义使用不同的PlatformTransactionManager。
@Transactional有如下属性可以设置:
@Transactional(propagation=Propagation.REQUIRED,readOnly=false,rollbackFor=Exception.class, noRollbackFor=FileNotFoundException.class)propagation默认等于Propagation.REQUIRED;
readOnly默认等于false;
rollbackFor默认是Class<? extends Throwable>[] rollbackFor() default {},也就是所有异常都回滚;
noRollbackFor默认是Class<? extends Throwable>[] noRollbackFor() default {},也就是说所有异常都回滚;
在Spring Boot中,当我们使用了spring-boot-starter-jdbc或spring-boot-starter-data-jpa依赖的时候,框架会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,如果两个依赖都加入,则可以在入口类处指定用哪个PlatformTransactionManager。
首先入口类要实现接口TransactionManagementConfigurer
然后加入如下代码:
// 创建事务管理器1,DataSource我们在连接数据库的时候就已经自定义了,这里会自动注入我们自定义的DataSource
@Bean(name = "txManager1")
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
// 创建事务管理器2
@Bean(name = "txManager2")
public PlatformTransactionManager txManager2(EntityManagerFactory factory) {
return new JpaTransactionManager(factory);
}
// 实现接口 TransactionManagementConfigurer 方法,其返回值代表在拥有多个事务管理器的情况下默认使用的事务管理器
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return txManager2;
}
相关文章推荐
- Spring Boot学习进阶笔记(二)-JdbcTemplate访问数据库
- Spring Boot学习笔记之数据库访问
- (3)Spring-boot学习 做一个简单的带访问数据库的web项目
- Spring Boot集成MyBatis访问数据库
- Spring学习历程---Hibernate访问数据库可脱离事务管理器
- SpringBoot学习笔记 - 数据访问(Spring Data JPA)
- spring boot 学习笔记(2) 整合mybatis
- MyBatis学习笔记(十二)spring与Mybatis整合事务
- SpringBoot和MyBatis集成案例(学习笔记)
- 微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
- 微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
- 微软企业库5.0学习笔记(三十五)数据访问模块 DataSet以及数据库事务
- Spring 学习笔记(四)——数据访问与事务
- SpringBoot学习笔记之mybatis分页插件集成
- spring学习笔记 -- day11 spring中的事务控制
- SpringMVC + Spring + MyBatis 学习笔记:在类和方法上都使用RequestMapping如何访问
- Spring boot 和 mybatis 学习笔记2--Mapper XML (静态)
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- Spring2.5学习笔记1-控制反转-DI容器泛型访问
- springboot学习笔记-2 一些常用的配置以及整合mybatis