Spring与Mybatis整合之加入事务处理

文章目录

  • 事务
    • 工程目录
    • sql语句
    • jar包
    • 配置文件
      • applicationContext.xml
      • db.properties
      • log4j.properties
    • java文件
      • entity
      • mapper
      • service
    • 测试文件
    • 结果演示
      • 无异常
      • 有异常

事务

工程目录

Spring与Mybatis整合之加入事务处理_第1张图片

sql语句

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT '用户名称',
  `birthday` date DEFAULT NULL COMMENT '生日',
  `sex` char(1) DEFAULT NULL COMMENT '性别',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8

jar包

jar

配置文件

applicationContext.xml




    
        
    
    

    
    

    
    
        
        
        
        
        
        
    

    
    
        
        
    

    
    
        
        
    

    
    

db.properties

db.driver = com.mysql.jdbc.Driver
db.url = jdbc:mysql://localhost:3306/ee19_batis_day03?useUnicode=true&characterEncoding=utf-8
db.username = root
db.password = 123

log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

java文件

entity

package com.entity;

import java.util.Date;

public class User {
    private int id;
    private String username;
    private Date birthday;
    private String address;
    private String sex;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

mapper

package com.mapper;


import com.entity.User;

public interface UserMapper {
    public void insertUser(User user);
}




    
        INSERT INTO USER (username,birthday,sex,address) VALUE (#{username}, #{birthday},#{sex},#{address})
    


service

package com.service;

import com.entity.User;

public interface UserService {
    public void addUser(User user);
}

package com.service;

import com.entity.User;
import com.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;

    @Transactional(propagation= Propagation.REQUIRED)
    public void addUser(User user) {
        userMapper.insertUser(user);
        int i = 1 / 0;
    }
}

测试文件

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@ContextConfiguration(locations = { "classpath:resources/applicationContext.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringTestCase extends AbstractJUnit4SpringContextTests {

}

import com.entity.User;
import com.service.UserService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

public class UserServiceTest extends SpringTestCase {

    @Autowired
    private UserService userService;
    @Test
    public void addUserTest(){
        User user = new User();
        user.setUsername("777");
        userService.addUser(user);
    }
}

结果演示

无异常

无异常就正常插入一条数据了

有异常

Spring与Mybatis整合之加入事务处理_第2张图片
当遇到抛出异常,数据库不插入数据
Spring与Mybatis整合之加入事务处理_第3张图片

你可能感兴趣的:(Spring与Mybatis整合之加入事务处理)