springboot+事务+mybatis|jpa的简易搭建

一、pom.xml和application.properties配置

1、pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>
	    <dependency>
		      <groupId>junit</groupId>
		      <artifactId>junit</artifactId>
		      <scope>test</scope>
	    </dependency>
  		<!-- servlet依赖. -->
        <dependency>
              <groupId>javax.servlet</groupId>
              <artifactId>javax.servlet-api</artifactId>
        </dependency>
              <dependency>
                     <groupId>javax.servlet</groupId>
                     <artifactId>jstl</artifactId>
              </dependency>
        <!-- tomcat的支持.-->
        <dependency>
               <groupId>org.apache.tomcat.embed</groupId>
               <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>	    
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		    <optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
		</dependency>
        
		<!-- mybatis -->
        <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
        
        <!-- jpa-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
        
		<!-- mysql -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.46</version>
		</dependency>
    </dependencies>

2、application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.password=XXXX

#mybatis.mapper-locations=classpath:com/transaction/mapper/*.xml
#mybatis.type-aliases-package=com.transaction.pojo

logging.level.root = DEBUG
logging.level.org.springframework=DEBUG
logging.level.org.org.mybatis=DEBUG

二、jpa

1、User

@Table(name = "user")
@Entity
@JsonIgnoreProperties({ "handler","hibernateLazyInitializer"})
public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
    private Integer id;

	@Column(nullable = false, length = 6)
    private String name;

    private String password;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2、UserDAO

public interface UserDAO extends JpaRepository<User, Integer> {
}

3、UserService

@Service
public class UserService{
	
	@Autowired
	private UserDAO userDAO;
	
	@Transactional
	public User getUser(int id) {
		return userDAO.findOne(id);
	}
	
	@Transactional
	public void insert(User user) {
		userDAO.save(user);
		user.setName("asd"+user.getName());
		user.setId(user.getId()+1);
		userDAO.save(user);
	}
	
}

4、UserController

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("getUser")
    public User getUser(int id){
        User u = userService.getUser(id);
        System.out.println(u.getName()+"!!!!!!!!!!!!!!!!");
        return u;
    }
    
    @RequestMapping("insert")
    public String insert(User user) {
    	user.setId(5);
    	try {
    		userService.insert(user);
		} catch (Exception e) {
			return "fail";
		}
    	return "success";
    }

}

5、TransactionApplication

@SpringBootApplication
@EnableTransactionManagement
//@MapperScan(basePackages ="com.transaction",annotationClass = Repository.class)
public class TransactionApplication {

    public static void main(String[] args) {
        SpringApplication.run(TransactionApplication.class, args);
    }
    
}

6、运行启动

在这里插入图片描述
在这里插入图片描述

三、mybatis

1、User

public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

    private Integer id;

    private String name;

    private String password;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2、Mapper

①userMapper.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.transaction.mapper.UserMapper">
    <select id="getUser" resultType="user" parameterType="java.lang.Integer">
        select * from user where id = #{id}
    </select>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="user" useGeneratedKeys="true">
        insert into user(id,name,password) values(#{id},#{name},#{password})
    </insert>
</mapper>

②UserMapper

@Repository
public interface UserMapper {
    User getUser(int id);

    void insert(User user);
}

3、UserService

public interface UserService{
	public User getUser(int id);
	public void insert(User user);
}

4、UserServiceImpl

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    @Transactional(isolation = Isolation.READ_COMMITTED, timeout = 1)
    public User getUser(int id){
        return userMapper.getUser(id);
    }

    @Override
    @Transactional(isolation = Isolation.READ_COMMITTED, timeout = 1)
    public void insert(User user) {
        userMapper.insert(user);
        System.err.println(user.getId());
        user.setName("asd"+user.getName());
        userMapper.insert(user);
    }
}

5、UserController

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("getUser")
    public User getUser(int id){
        User u = userService.getUser(id);
        System.out.println(u.getName()+"!!!!!!!!!!!!!!!!");
        return u;
    }
    
    @RequestMapping("insert")
    public String insert(User user) {
    	user.setId(5);
    	try {
    		userService.insert(user);
		} catch (Exception e) {
			return "fail";
		}
    	return "success";
    }

}

6、TransactionApplication

@SpringBootApplication
@MapperScan(basePackages ="com.transaction",annotationClass = Repository.class)
public class TransactionApplication {

    public static void main(String[] args) {
        SpringApplication.run(TransactionApplication.class, args);
    }

   @Autowired
    PlatformTransactionManager transactionManager = null;
    
    @PostConstruct
    public void viewTransactionManager() {
    	System.out.println("tran:"+transactionManager.getClass().getName());
    }
}
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.password=XXXX

mybatis.mapper-locations=classpath:com/transaction/mapper/*.xml
mybatis.type-aliases-package=com.transaction.pojo

logging.level.root = DEBUG
logging.level.org.springframework=DEBUG
logging.level.org.org.mybatis=DEBUG

7、运行启动

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/miswujian/article/details/89138902