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等,先把項目具體的放置結構貼出來如下:
對于上圖的解釋如下:
@Autowired@Lazy //這樣就會延遲加載,上圖不需要,這里只是解釋這注解LogsUserActiveMapper logsUserActiveMapper;
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配置。
總結
以上是生活随笔為你收集整理的spring boot配置mybatis和事务管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: erlang精要(19)-以函数作为参数
- 下一篇: erlang(20)-控制抽象与判断素数