SSM統合記事] 3。SSM統合+ +ユニットテストケース総務章III(4章)

春+ SpringMvc + MyBatisのトランザクションの統合+ +第III章ユニットテストケース

githubの源码(day56-SSM-トランザクション)https://github.com/1196557363/ideaMavenProject

いくつかの知識は、参照を理解することはできません] SSMは、記事を統合する。春+ SpringMvc + MyBatisの単純なケースを

章に接続された場合[章]統合SSM III。第II章+積分+トランザクションユニットテストケースSSM(4つの章)

7.testトランザクション構成

7.1 day56-SSM-トランザクションは、新しいテーブルを作成します

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `name` varchar(11) NOT NULL,
  `account` double(8,2) DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('czh', '10000.00');
INSERT INTO `user` VALUES ('wpj', '100000.00');

7.2新規エンティティクラス、DAO、マッパー、サービスおよびserviceImpl

7.2.1ユーザー

package com.wpj.bean;

/**
 * ClassName: User
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\8 0008 21:01
 * @since JDK 1.8
 */
public class User {
    private String name;
    private Double account;
    public User() {}
    public User(String name, Double account) {
        this.name = name;
        this.account = account;
    }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Double getAccount() { return account; }
    public void setAccount(Double account) { this.account = account; }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", account=" + account +
                '}';
    }
}

7.2.2 IUserDao3

(モジュールプロジェクトのIUserDaoでプロジェクトのIとIUserDao2はそうIUserDao3という名前の、1対1の対応の背後に繰り返し)
package com.wpj.dao;

/**
 * ClassName: IUserDao
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\8 0008 21:03
 * @since JDK 1.8
 */
public interface IUserDao3 {
     /**
     * 扣钱
     * @param outName  扣钱方
     * @param money    扣多少钱
     */
    void out(@Param("name") String outName,@Param("money") Double money);
    /**
     * 得钱
     * @param inName 得钱方
     * @param money  得多少钱
     */
    void in(@Param("name") String inName,@Param("money") Double money);
}

7.2.3 IUserDao3.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.wpj.dao.IUserDao3">
    <update id="out">
        UPDATE user SET account=account-#{money} WHERE name=#{name}
    </update>
    <update id="in">
        UPDATE user SET account=account+#{money} WHERE name=#{name}
    </update>
</mapper>

7.2.4 IUserService3

package com.wpj.service;

/**
 * ClassName: IUserService3
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\8 0008 21:11
 * @since JDK 1.8
 */
public interface IUserService3 {
	// 记住这个方法名
    void transfer(String outName,String inName,Double money);

}

7.2.5 UserServiceImpl3

package com.wpj.service.impl;

import com.wpj.dao.*;
import com.wpj.service.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.stereotype.*;

/**
 * ClassName: UserServiceImpl3
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\8 0008 21:12
 * @since JDK 1.8
 */
@Service
public class UserServiceImpl3 implements IUserService3 {

    @Autowired
    private IUserDao3 iUserDao3;

    public void transfer(String outName, String inName, Double money) {

        System.out.println("正在扣钱。。。。");
        iUserDao3.out(outName,money);
		// 模拟错误
		int i = 10 / 0;		

        System.out.println("正在得钱。。。。");
        iUserDao3.in(inName,money);
        System.out.println("操作完成。。。。");
    }
}

7.2.5テスト

import com.wpj.bean.*;
import com.wpj.service.*;
import org.apache.ibatis.session.*;
import org.junit.*;
import org.junit.runner.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.test.context.*;
import org.springframework.test.context.junit4.*;

import javax.sql.*;
import java.util.*;

/**
 * ClassName: SSMTest
 * Description:
 *
 * @author JieKaMi
 * @version 1.0
 * @date: 2020\1\8 0008 17:51
 * @since JDK 1.8
 */

@RunWith(value= SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:spring-context.xml")
public class SSMTest {

    @Autowired
    private IUserService3 iUserService3;

    @Test
    public void testTransfer(){
        iUserService3.transfer("czh","wpj",1000.0);
    }
}

7.2.6結果

ここに画像を挿入説明
間違ったそうデータは変更されないこと、トランザクションが正常に設定されている場合、それはトランザクションをロールバックする必要があり、うち与えられないために、お金のデータベースを控除の実装は、例外が発生した見て、トランザクションにもロールバックではありません!これは、事務の質問ですか?確かに〜。トランザクションプロファイル、ばねのcontext.xmlの設定で見てみましょう
ここに画像を挿入説明
唯一のサービスメソッドの名前業務ポリシーを変更する必要があり、この時間は、ライン上にマッチした、または書き込み操作を追加しています。

継続するには。
  1. スプリングとSpringMVC統合[SSM]統合三条。SSM統合業務+ +ユニットテストケースの端部(4つの章)
公開された42元の記事 ウォンの賞賛8 ビュー2438

おすすめ

転載: blog.csdn.net/TheNew_One/article/details/103897975