當前位置:
首頁 > 知識 > SpringBoot整合Mybatis實現事務控制

SpringBoot整合Mybatis實現事務控制

在Spring之中提供的事務控制裡面有以下的幾種事務級別。

如果現在要想在springboot裡面去啟用mybatis事務,那麼就可以通過如下的方式來解決。

修改IDeptDAO介面,追加一個只讀事務控制:

import java.util.List;

public interface IDeptService {

@Transactional(readOnly = true)

public List getAll();

}

此時配置了一個只讀的事務操作,那麼也就是說在這個業務方法只能夠採用讀的模式來進行操作。但是現在你配置了一個註解並不表示當前已經合理的支持了事務,如果要進行事務的啟用,還需要在程序的啟動類上增加一個新的註解配置:

package com.gwolf;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication //啟動SpringBoot程序,而後自帶子包掃描。

@EnableTransactionManagement

public class StartSpringBootMain {

public static void main(String[] args) {

SpringApplication.run(StartSpringBootMain.class, args);

}

}

如果現在要想更好的觀察到事務的問題,最簡單的做法是編寫一個數據增加操作,而後為這個業務方法設置只讀配置。修改IDeptDAO介面追加一個新的方法:

import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper

public interface IDeptDAO {

public List findAll();

public boolean doCreate(Dept vo);

}

修改Dept.xml配置文件,追加一個方法的實現的SQL語句。

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT deptno,dname,loc FROM dept ;

insert into dept(dname) values(#);

在IDeptService介面之中追加有一個業務方法:

import java.util.List;

public interface IDeptService {

@Transactional(readOnly = true)

public List getAll();

@Transactional(readOnly = true)

public boolean add(Dept dept);

}

編寫單元測試類:

import com.gwolf.StartSpringBootMain;

import org.junit.Test;

import org.springframework.test.context.web.WebAppConfiguration;

import javax.annotation.Resource;

import javax.sql.DataSource;

@SpringBootTest(classes = StartSpringBootMain.class)

@RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

public class TestDeptService {

@Resource

private IDeptService deptService;

@Test

public void testList() throws Exception{

}

@Test

public void testAdd() throws Exception{

Dept dept = new Dept();

dept.setDname("百度");

dept.setDeptno(100L);

}

}

如果在實際的工作之中,對於更新操作應該強制性的啟動一個事物控制才對:

import java.util.List;

public interface IDeptService {

@Transactional(readOnly = true)

public List getAll();

@Transactional(propagation = Propagation.REQUIRED)

public boolean add(Dept dept);

}

此時應該明確的表示該操作方法應該啟動一個事物的配置項。

在使用spring+mybatis裡面處理的時候應該考慮到信息的顯示問題,所以此處建議使用logback日誌組件來進行日誌信息的配置。將logback.xml配置文件拷貝到src/main/resouces之中;

在項目之中去引入logback的依賴配置文件。

在正常情況下mybatis中的日誌信息的輸出操作必須設置其對應的命名控制,在logback.xml中追加如下信息;

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Adolph談JAVA高端 的精彩文章:

SpringCloud實現Eureka集群配置
反射與代理設計模式-動態代理設計模式

TAG:Adolph談JAVA高端 |