spring boot配置mybatis和事务管理

spring boot配置mybatis和事务管理

一、spring boot与mybatis的配置

1.首先,spring boot 配置mybatis需要的全部依赖如下:

<!-- Spring Boot 启动父依赖 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.1.RELEASE</version>
</parent>
<!--以上内容放在dependencies标签外,如果你有已经有父标签,那将以上部分粘贴到父项目中-->
<!-- spring boot 项目启动必须引入的web依赖,以下内容放在dependency即可 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>1.5.1.RELEASE</version>
</dependency>       <!-- Spring Boot Mybatis 依赖 -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version>
</dependency><!-- oracle的数据库驱动包 -->
<dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.4.0-atlassian-hosted</version>
</dependency>

这里主要说一下上边的数据库驱动包,oracle和mysql引入不同的依赖,千万不要忘记。如果忘记引入,会报找不到驱动类异常。

2.然后,在application.properties 配置文件里添加如下内容:

##数据库连接信息
spring.datasource.url=jdbc:oracle:thin:@//192.168.1.171:1521/orcl
spring.datasource.username=znxd
spring.datasource.password=znxd
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
##指向mapper的xml文件位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
##指向实体类的位置
mybatis.type-aliases-package=cloud.user.models.*

上边以spring.datasource 开头的内容其实有很多,具体,在application.properties 文件里输入后看看能点出的内容就知道了。

springboot默认会把spring.datasource开头的信息收纳,进行DataSource对象的配置,进而进行sqlSessionFactory的配置等相关数据库连接的配置,所以其他很多人会说写什么配置类,那些我感觉没有必要的。(配置druid需要配一个@Bean,下一篇会说到)

当然如果是特别详细的,而在application.properties文件里又通过spring.datasource 点不出相关的配置,那可能需要配置类什么的。
mybatis.mapper-locations 所指向的位置是从src/main/resource开始的,前边需要加上classpath,它指向的是你的mapper.xml文件放置的位置。

3.我是mybatis通过数据库表逆向工程生成的实体类、mapper等,先把项目具体的放置结构贴出来如下:

这里写图片描述

对于上图的解释如下:

  1. 启动类必须放在项目中相对其他类的最高处,前边文章说过,spring boot没有传统的spring 项目配置的`` 标签,它扫描bean的方式就是从启动类依次向下扫描进默认的内置tomcat容器的。
  2. 上图service放置的位置比其实现类放置的位置高,如果有两个service A和B,实现类里有Aimpl和Bimpl,如果有Aimpl调用B的情况,有可能会在启动容器报“a field named ‘B’ not found”貌似这种错误,说明容器扫描顺序有误。
  3. 这种情况的最好的解决办法,就应该像我将service放在高处,容器启动先扫描进service,然后再扫描impl,这样在实现类扫描的时候就肯定能找到service,也就不会出现这种错误了。
  4. 另一种解决办法是在引入service时多添加一个注解:@Lazy
    @Autowired@Lazy //这样就会延迟加载,上图不需要,这里只是解释这注解LogsUserActiveMapper logsUserActiveMapper;
  5. 总之,如果出现调用与被调用关系,一定要记得,被调用者要首先被扫描进spring boot内置容器,也就是被调用者的包位置要放的较高一些(位置至少也待相平)。

4.service实现类上需要加一个@Service 注解。这个可能不需要,我一直没有试试。

5.spring boot+mybatis除了这些要求,还需要在启动类处添加一个注解@MapperScan,如下:

package cloud.kafka;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;@SpringBootApplication
@EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
@MapperScan("cloud.kafka.mapper")  //扫描的是mapper.xml中namespace指向值的包位置
public class KafkaLogApplication {public static void main(String[] args){SpringApplication.run(KafkaLogApplication.class, args);}
}

如下是我的mapper.xml里namespace的值

<mapper namespace="cloud.kafka.mapper.LogsUserActiveMapper" >

这样就完成mybatis的配置了。

二、事务的配置,就是在mybatis的基础上加上两个注解。

1、需要的注解为@EnableTransactionManagement@Transactional 两个,它们来自于下边这个包:

spring-tx.jar

该包其实在前边配置mybatis引入依赖时,已自动引入,就是下边这个:

 <!-- Spring Boot Mybatis 依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>

所以只要上边的依赖引入进来,那事务就不需要再引入包了

2.首先,找到你的service实现类,加上@Transactional 注解,如果你加在类上,那该类所有的方法都会被事务管理,如果你加在方法上,那仅仅该方法符合具体的事务。当然我们一般都是加在方法上。因为只有增、删、改才会需要事务。

比如下边的一个插入数据的方法添加事务:

@Override
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
public Integer add(Cbf_jtcy t) {return cbf_jtcyMapper.insert(t);
}

如果不知道里边都是什么东西,可以查看这篇文章,spring,mybatis事务管理配置与@Transactional注解使用

3.配置完后,spring boot启动类必须要开启事务,而开启事务用的注解就是@EnableTransactionManagement ,如下:

@SpringBootApplication
@EnableTransactionManagement 
@MapperScan("microservice.qssj.mapper")//必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释,并且这里还要多填一个注释,那个我忘了,我一直用这个注解
public class QssjServiceApplication {public static void main(String[] args) {SpringApplication.run(QssjServiceApplication.class, args);}
}

这样就完成了事务的配置。

说一下上边的@EnableTransactionManagement是不是必加的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下一篇写spring boot + druid配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android hud sdk,Android HUD SDK | 百度地图API SDK

简介为了给用户提供更安全优质的服务&#xff0c;LBS开放平台针对Android平台的SDK产品引入Key认证机制&#xff0c;用户在使用之前需要先申请配置Key&#xff0c;并在程序相应位置填写您的Key。Key机制&#xff1a;每个Key仅且唯一对于1个应用验证有效&#xff0c;即对该Key配…

spring boot配置druid(德鲁伊)

spring boot配置druid(德鲁伊) 关于druid的介绍请看 阿里巴巴温少访谈 1.引入相关依赖&#xff0c;全部依赖是上一篇spring bootmybatis依赖的基础上&#xff0c;再加上下边的依赖&#xff0c;如下&#xff1a; <!-- Druid数据库连接池组件 --> <dependency><…

spring boot----简单入门

Spring Boot其实就是spring,为了简便spring框架的搭建&#xff0c;快速开发项目而推出的另一种方式。使用spring boot&#xff0c;搭建框架将变得特别快。可以有更多的时间在代码性能上优化了。 一、Spring Boot个人感觉的优点: ​ 1&#xff09;搭建一个简单运行的框架很快&…

android js 代码混淆工具,好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版

好用的JS(Javascript)混淆加密工具-HDS JSObfuscator 2.14版书法字体2017.06.23css压缩分享一款好用的JS混淆加密工具:HDS JSObfuscator 2.14版&#xff0c;HDS JSObfuscator兼顾了JS压缩、JS混淆和JS加密三大功能。js加密工具的主要作用就是为了保护Javascript代码&#xff0c…

Maven 建立父子项目和跨项目调用内容的步骤

使用Maven管理项目&#xff0c;同时我们是做微服务&#xff0c;所以对于微服务项目来说&#xff0c;使用Maven建立起一个父子项目这种关系&#xff0c;很方便管理&#xff08;只是个人感觉&#xff09; 设计层面 &#xff08;1&#xff09;服务端和客户端肯定是分开写的&…

android支付宝运动修改器,一键修改支付宝运动步数-修改支付宝运动步数工具下载不要root手机版-西西软件下载...

修改支付宝运动步数工具是一款支付宝运动步数修改工具和教程,QQ微信也可以修改&#xff0c;最近在支付宝中推出了各种运动活动&#xff0c;很多朋友表示想要直接刷步数&#xff0c;不想去亲自运动来增加步数。那么下面手机乐园水银师小编就为大家介绍了支付宝快速刷步数的方法&…

spring boot配置tomcat部署

spring boot本身默认为jar包运行&#xff0c;可以改为war包&#xff0c;然后运行在tomcat里 具体修改的步骤如下&#xff1a; 1.在pom.xml文件里添加需要的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>s…

android同步aar到jcenter,android上传aar到jcenter

一、jcenter配置1、jcenter官网注册账号官网地址&#xff1a;https://bintray.com注册页面&#xff1a;2、注册成功记录API Key 鼠标放在账户名上&#xff0c;点击Edit Profile,选择API Key,在这里是需要输入登录密码的&#xff0c;然后就可以看到你的key3、创建仓库点击此处进…

spring boot配置logback日志

spring boot配置logback日志 在上一篇spring boot入门里提过&#xff0c;Spring Boot默认的日志打印是logback,所以配置logback日志会很简单&#xff0c;但是也有注意的地方。 本次配置日志的需求 日志需要控制台打印和文件打印两种。其中文件打印按照日志级别分别保存到各自…

springboot-项目获取resources下文件的方法

spring项目获取resources下文件的方法 最近写读取模板文件做一些后续的处理&#xff0c;将文件放在了项目的resources 下&#xff0c;发现了一个好用的读取方法&#xff1a; 比如上边是你需要读取的文件&#xff1a; 读取的方法如下&#xff1a; //File file ResourceUtils…

几款经典好用的Android,经典实用 Android十款生活必备软件推荐

【IT168 应用】在众多Android应用中有许多优秀的生活方式软件&#xff0c;它们为我们的生活提供了各方面的服务&#xff0c;例如像查看天气预报、搜索周边美食、提醒重要事件等等。大家已经慢慢的熟悉了移动互联生活&#xff0c;尤其是工作中的白领&#xff0c;手机更成为了他们…

springboot配置单独的参数文件

一、介绍 是不是经常用Value注解&#xff1f;用过springboot的都知道它是从application.properties文件中引入某个变量的值&#xff0c;是不是已经灰常熟悉了&#xff1f; 默认在springboot启动后&#xff0c;加载application.properties文件&#xff0c;通过Value("${}&…

nacos初探--作为配置中心

什么是nacos Nacos 支持基于 DNS 和基于 RPC 的服务发现&#xff08;可以作为springcloud的注册中心&#xff09;、动态配置服务&#xff08;可以做配置中心&#xff09;、动态 DNS 服务。 官方介绍是这样的&#xff1a; Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提…

Module build failed: Error: Cannot find module ‘node-sass‘ Require stack报错解决

Module build failed: Error: Cannot find module ‘node-sass’ Require stack报错解决 异常信息 解决方法 设置用淘宝镜像下载 npm install --save-dev node-sass --registryhttps://registry.npm.taobao.org --disturlhttps://npm.taobao.org/dist --sass-binary-sitehtt…

xp系统怎样添加桌面计算机名,教你win10系统电脑桌面怎么添加日历

很多用户都会选择在电脑的桌面上建立一个日历小挂件来提醒自己&#xff0c;其实在电脑桌面添加日历&#xff0c;可防止用户耽误工作进程的安排&#xff0c;不知win10系统电脑桌面怎么添加日历的用户&#xff0c;请来看看下面的介绍吧。日历对很多用户来说是非常重要的&#xff…

什么是Nacos?Nacos注册配置中心介绍

一、什么是Nacos 英文全称Dynamic Naming and Configuration Service&#xff0c;Na为naming/nameServer即注册中心,co为configuration即注册中心&#xff0c;service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民 二、Nacos原理 nacos简单介绍 Nacos注册中心…

矩阵 计算机应用,《计算机视觉算法:基于OpenCV的计算机应用开发》 —3.3 元素级矩阵操作...

3.3 元素级矩阵操作基于元素的(元素级)矩阵操作是计算机视觉中的一类数学函数和算法&#xff0c;它处理矩阵的各个元素&#xff0c;或者说&#xff0c;图像中的每个像素。注意基于元素的操作可以并行化&#xff0c;因此矩阵元素的处理顺序不重要。这个特点是本节函数和算法与本…

微服务系列之ZooKeeper注册中心和Nacos注册中心Nacos和Zookeeper对比

一、ZooKeeper注册中心 Zookeeper 是 Apache Hadoop 的子项目&#xff0c;是一个树型的目录服务&#xff0c;支持变更推送&#xff0c;适合作为 Dubbo 服务的注册中心&#xff0c;工业强度较高&#xff0c;可用于生产环境&#xff0c;推荐使用。 流程说明&#xff1a; 服务提…

springboot配置跨mapper.xml的全局变量

springboot配置跨mapper.xml的全局变量 有这样的需求&#xff0c;mybatis框架的mapper.xml&#xff0c;即映射文件里&#xff0c;如果需要配置一个全局变量&#xff0c;然后&#xff0c;在所有的mapper.xml里都能拿到使用。 这需求也不苛刻吧~ 后来查了下&#xff0c;发现对…

SpringBoot升级到2.0后默认时间格式变化_springboot接收date类型参数

springboot1.x时&#xff0c;请求返回默认将Date类型转换成时间戳&#xff1a; createTime: 1544693261000然而在升级到springboot2.0后&#xff0c;默认返回的时间格式变成了UTC字符串&#xff1a; createTime: "2021-12-13T09:27:41.0000000"对于网页端或安卓端&…