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中追加如下信息;
※SpringCloud實現Eureka集群配置
※反射與代理設計模式-動態代理設計模式
TAG:Adolph談JAVA高端 |