Spring Boot 学习笔记4——结合Mybatis访问数据库及事务控制

spring boot提供的数据库访问(通过JdbcTemplate)可看Spring Cloud学习笔记3——配置中心

码云地址: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.xml
3、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;
    }







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值