1. 程式人生 > >6.springboot整合mybitas(xml方式)+開啟申明式事物

6.springboot整合mybitas(xml方式)+開啟申明式事物

(1)pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.tyf</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>test</name>
  <url>http://maven.apache.org</url>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.2.RELEASE</version>
		<relativePath/>
	</parent>
	
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
	</properties>
	
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- mybitas -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency><!-- mybitas -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- mysql -->
		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency><!-- mysql -->
		</dependencies>
		
		
		<build>
			<plugins>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<configuration>
					<skip>true</skip>
					</configuration>
				</plugin>
			</plugins>
		</build>

</project>
(2)application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath*:mybatis/*Mapper.xml
mybatis.type-aliases-package=com.tyf.entity
(3)/resources/mybatis/AccouMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tyf.dao.AccounDao">

    <update id="updateAccoun">
        UPDATE accoun
		set login=#{login},name=#{name},pass=#{pass}
        WHERE accoun_id=#{accoun_id}
    </update>
</mapper>

(4)dao
package com.tyf.dao;

import org.apache.ibatis.annotations.Param;
import org.mybatis.spring.annotation.MapperScan;
import com.tyf.entity.Accoun;



public interface AccounDao {

	int updateAccoun(
					@Param("accoun_id")Integer id,
					@Param("login")String login,
					@Param("name")String name,
					@Param("pass")String pass);	
}

(5)service/serviceImpl
package com.tyf.service;



public interface AccounService  {


	//不開啟申明式事物
	public void update1();
	
	//開啟申明式事物之後,同一個事物內的資料庫操作保證都成功或者都失敗
	public void update2();
}

<!-- 分割線 -->

package com.tyf.service;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.tyf.dao.AccounDao;


@Service
public class AccounServiceImpl  implements AccounService{

	@Autowired
	private AccounDao accounDao;
	
	//不開啟申明式事物
	public void update1(){
		accounDao.updateAccoun(1,"new_login","new_name","new_pass");//成功
		int i=1/0;
		accounDao.updateAccoun(2,"new_login","new_name","new_pass");//失敗
	}
	
	//開啟申明式事物之後,同一個事物內的資料庫操作保證都成功或者都失敗
	@Transactional
	public void update2(){
		accounDao.updateAccoun(3,"new_login","new_name","new_pass");//失敗
		int i=1/0;
		accounDao.updateAccoun(4,"new_login","new_name","new_pass");//失敗
	}
}


(6)controller
package com.tyf.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.tyf.service.AccounService;



@RestController
@RequestMapping("/accoun")
public class AccounController {

	@Autowired
	private AccounService accounService;
	
	@RequestMapping(value="/test1",method = RequestMethod.GET)
	@ResponseBody
	public String getAccoun1(){
		accounService.update1();
		return "test1";
	}
	
	
	@RequestMapping(value="/test2",method = RequestMethod.GET)
	@ResponseBody
	public String getAccoun2(){
		accounService.update2();
		return "test2";
	}
	
	
	
}

(7)app
注意app要新增MappserScan註解掃描dao包,不然dao介面可能注入失敗
package com.tyf;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */


@SpringBootApplication
@MapperScan("com.tyf.dao")
public class App 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(App.class,args);
    }
}
(8)工程圖片


開啟事物直接在service的每個方法上面添加註解就可以開啟申明式事務,保證整個方法中資料庫操作的成功或者失敗回滾

相關推薦

6.springboot整合mybitas(xml方式)+開啟申明事物

(1)pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati

SpringBoot精藏(六)SpringBoot開啟申明事務

SpringBoot開啟申明式事務,只需要一個@Transactional就可以。因為在SpringBoot 中已經預設對jpa和mybatis,hibernate開啟了事務,在引入引用的時候自動就開啟了事務。但是想要用BeatlSQL的話,就必須自己手動開啟事務。 首先建

6. springboot整合quartz實現定時任務

轉載:http://www.cnblogs.com/lic309/p/4089633.html 在做專案時有時候會有定時器任務的功能,比如某某時間應該做什麼,多少秒應該怎麼樣之類的。 spring支援多種定時任務的實現。我們來介紹下使用spring的定時器和使用q

使用dubbo註解@Service註冊服務後使用aop或者申明事物導致無法註冊的問題解決辦法

導致這個問題的主要原因有2個 1:JdkDynamicProxy導致獲取到的class路徑不正確無法通過包路徑檢查動態代理後的物件獲取到的class都是 com.sun.proxy開頭的 private boolean isMatc

SpringBoot整合MyBatis(iBatis),基於註解和XML兩種方式

工具 IDEA Maven 專案建立 1. 通過IDEA建立SpringBoot專案 2. 結構目錄和JAVA版本選擇 3. 新增MySQL和MyBatis支援 4. 新增Lombok外掛,簡化GET、SET方法 5. WEB支援和啟動類 6. 專

springboot整合mybatis(Mapper.xml和註解兩種方式)

本部落格中介紹了兩種整合方式,分別是xml配置和註解 依賴 <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-co

SpringBoot填坑系列---XML方式配置數據庫

... eno aging width 1.2 tom group urn epo 本次只是簡單的運用SpringBoot搭建框架,對其原理並不做深入的探究 1.POM文件 1 <?xml version="1.0" encoding="UTF-8"?>

springboot整合mybatis(映射文件方式和註解方式

分頁 character 訪問 runt mod tis 1.2 req arch   springboot作為一個微服務框架,給我們開發人員提供極大的便利,秉著約定大於配置的原則,通過starter包的形式為我們做了許多默認的配置,在進行數據持久化到關系型數據庫時,我們一

Redis詳解 - SpringBoot整合Redis,RedisTemplate和註解兩種方式的使用

本文主要講 Redis 的使用,如何與 SpringBoot 專案整合,如何使用註解方式和 RedisTemplate 方式實現快取。最後會給一個用 Redis 實現分散式鎖,用在秒殺系統中的案例。 更多 Redis 的實際運用場景請關注開源專案 coderiver 專案地址:github.com/cac

6章 使用springboot整合netty搭建後臺

我們不會去使用自增長的id,在現階段的網際網路開發過程中,自增長的id是已經不適用了。在未來隨著系統版本的迭代,使用者數量的遞增,肯定會做分庫分表,去做一些相應的切分。在這個時候我們就需要有一個唯一的id。專案裡面會有一個唯一id的外掛去使用。所有的主鍵id都會使用一個字串varchar。小頭像是預覽過程

Springboot整合通用mapper、XML、service《spring boot學習五》

1. springmvc之mapper.xml的痛 ​ 一般情況下都是一個類寫一個xml或者說即使N個類共用一個XML,其實對於開發者的工作量也是很大的,前期倒沒有什麼,因為可以用自動生成工具來生成,但是後期,如果要新增什麼欄位或者修改欄位的話,對於我們來說真的太噁心了 ​ 所以

spring Security4 和 oauth2整合 註解+xml混合使用(替換6位的授權碼)

spring Security4 和 oauth2整合替換6位的授權碼 git地址:https://gitee.com/xiaoyaofeiyang/OauthUmp spring Security4 和 oauth2整合 註解+xml混合使用(基礎執行篇) spring Secu

springboot整合docker部署(兩種構建Docker映象方式

在docker開始部署springBoot專案(方法一) Dockerfile 檔案 FROM openjdk:8-jdk-alpine VOLUME /tmp ADD testdocker-1.0-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-Djava.s

springboot整合servlet兩種方式

前言:            springboot與servlet整合的兩種方式,整合步驟如下: springboot整合servlet方式一: 專案結構: pom.xml: <?xml version="1.0" encoding="UTF-8"?>

springboot整合servlet方式

1.建立一個springboot專案 package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.Sp

springboot整合listener方式

建立一個專案 package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootAp

springboot整合mybatis的兩種方式的精講過程(含demo下載)

前言: spirngboot整合mybatis過程有兩種整合方式,一種就是通過xml檔案來寫sql,另外一種就是通過註解的方式來寫sql語句.但是不論哪種方式都首先需要引入一個最重要的jar包。那就是mybatis-spring-boot-starter這個包。這個包的部分

SpringBoot整合Mybatis 時開啟事務

1、首先在啟動類加上 @EnableTransactionManagement(proxyTargetClass = true) 注:proxyTargetClass預設為false,springboot的事務是以 JDK dynamic proxy 實現的。我不加之前

SpringBoot整合MyBatis(註解版+XML配置版)

一.公共部分 1.建立SpringBoot專案,加入依賴 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs

Springboot整合mybatis、以及xml配置例項、熱部署

整合mybatis: 引入jar包,這個包是dao+server整合,內涵mybatis生成的xml,及mapper介面和bean物件 引入包後,其包的依賴也會下來,所依賴的jar yml檔案配置連線引數,資料來源如果有引入jar則還可以配置資料來源,myb