Spring Boot 学习笔记4——结合Mybatis访问数据库及事务控制
来源:互联网 发布:小米数据恢复 编辑:程序博客网 时间:2024/06/05 14:12
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.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 mapperPUBLIC "-//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 twhere application = #{application , jdbcType=VARCHAR}</select></mapper>5、mapper接口要用@Mapper注解,ConfigInfoMapper.java文件内容如下:
@Mapperpublic interface ConfigInfoMapper {public List<NameValuePair> getConfigInfo(Map<String, Object> params);}至此,mybatis已配置完成,可以通过mybatis访问数据库了,在需要使用的地方通过@Autowired注入xxxMapper接口即可,如:
@Autowiredprivate 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 学习笔记4——结合Mybatis访问数据库及事务控制
- Spring结合jdbc以及mybatis事务控制
- Spring Boot学习笔记之数据库访问
- Spring Boot集成MyBatis访问数据库
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- 学习笔记-------spring 事务控制
- spring boot mybatis结合初探
- spring-boot与mybatis结合
- hibernate结合spring框架配置连接数据库以及事务控制
- spring boot学习笔记(三):controller用法及数据库操作
- spring boot mybatis 加事务
- SpringBoot学习笔记(4) Spring Boot 集成 Mybatis
- SpringBoot学习笔记(4) Spring Boot 集成 Mybatis
- 设定脚本路径
- arcgis api for js热力图优化篇-不依赖地图服务
- TCP与UDP 详细介绍及区别
- 2017年深度学习--梯度下降 优化算法研究
- 古代健身神器
- Spring Boot 学习笔记4——结合Mybatis访问数据库及事务控制
- 看,这个工具栏能伸缩折叠——Android CollapsingToolbarLayout使用介绍
- Android实现内录
- 游戏性能优化
- PHP实现定时任务的几种方式和详解
- VUE(四)
- netty入门
- 如何修改windows系统3389端口|远程桌面默认端口
- 就两个数的最大公因数