Springboot 整合mybatis框架实现增删改查及事务处理——SpringBoot学习

一、POM 文件引入 JAR

  在 pom.xml 中引入 Mybatis 以及测试包

<!-- mybatis 依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>1.1.1</version>
</dependency>

<!-- mysql 依赖 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 测试 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
	<exclusions>
		<exclusion>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
		</exclusion>
	</exclusions>
</dependency>

<!-- SpringBoot 2.0 的 spring-boot-starter-test 中的spring-test 是5.0.4 版本的,
		而,5.0.4 版没有 SpringJUnit4ClassRunner 和 SpringRunner 所以去除,另加入5.0.5 及以上版本的spring-test-->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>5.0.5.RELEASE</version>
	<scope>test</scope>
</dependency>

二、application.properties 新增配置

  在 application.properties 中添加数据源和 Mybatis 的配置

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

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

使用 application.yml 的配置为

### datasource Configuration
spring:      
  datasource:
    url: jdbc:mysql://localhost:3306/mysql
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: 123456
### mybatis Configuration   
mybatis:
  type-aliases-package: com.bean
  mapper-locations:
  - classpath:com/mapper/*.xml  

三、编写 Mapper

  编写 Mapper.xml 文件 src/main/java/com/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.mapper.UserMapper">

	<insert id="insertUser" parameterType="user">
		insert into t_user(id, name) values(#{id}, #{name})
	</insert>

	<select id="selectUsersAll" resultType="user">
		select id,name from t_user
	</select>

	<update id="updateUser" parameterType="user">
		update t_user set name=#{name} where id=#{id}
	</update>

	<delete id="deleteUserById" parameterType="string">
		delete from t_user where id = #{id}
	</delete>
</mapper>

  编写接口 Mapper 接口 src/main/java/com/mapper/UserMapper.java

package com.mapper;

import java.util.List;

import com.bean.User;

/**
* @Description springboot 整合mybatis
* @author 欧阳
* @since 2019年4月11日 下午4:26:00
* @version V1.0
*/

public interface UserMapper {
	/**
	 * 添加用户
	 * @param user
	 */
	public void insertUser(User user);
	
	/**
	 * 更新用户
	 * @param user
	 */
	public void updateUser(User user);
	
	/**
	 * 查询用户
	 * @param user
	 * @return
	 */
	public List<User> selectUsersAll();
	
	/**
	 * 删除用户
	 * @param id
	 */
	public void deleteUserById(String id);
}

四、编写 Service

  增加 Service 接口 src/main/java/com/service/MybatisService.java 并实现 src/main/java/com/service/impl/MybatisServiceImpl.java
MybatisService 接口代码

package com.service;

import java.util.List;

import com.bean.User;

/**
* @Description springboot 整合 mybatis 的Service
* @author 欧阳
* @since 2019年4月11日 下午4:30:37
* @version V1.0
*/

public interface MybatisService {
	
	/**
	 * 添加用户
	 * @param user
	 */
	public void insertUser(User user);
	
	/**
	 * 更新用户
	 * @param user
	 */
	public void updateUser(User user);
	
	/**
	 * 查询用户
	 * @param user
	 * @return
	 */
	public List<User> selectUser();
	
	/**
	 * 删除用户
	 * @param id
	 */
	public void deleteUser(String id);
}


MybatisServiceImpl 实现类

package com.service.impl;

import java.util.List;

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

import com.bean.User;
import com.mapper.UserMapper;
import com.service.MybatisService;

/**
* @Description springboot 整合 mybatis 的Service
* @author 欧阳
* @since 2019年4月11日 下午4:30:37
* @version V1.0
*/

@Service
public class MybatisServiceImpl implements MybatisService {
	
	@Autowired
	private UserMapper usersMapper;
	
	@Override
	@Transactional
	public void insertUser(User user) {
		
		usersMapper.insertUser(user);
		
//		int num = 1/0;  //放开测试事务。预期结果为添加失败,库中无数据。测试结果与预期一致
	}

	@Override
	@Transactional
	public void updateUser(User user) {
		usersMapper.updateUser(user);
	}

	@Override
	public List<User> selectUser() {
		return usersMapper.selectUsersAll();
	}

	@Override
	@Transactional
	public void deleteUser(String id) {
		usersMapper.deleteUserById(id);
	}
}


  注意:通过使用 @Transactional 注解添加事务,在 insertUser 方法中的插入数据代码后增加异常代码 int num = 1/0; 测试事务是否起作用,实际测试结果表明测试结果与预期一致。

五、测试类

  添加测试类测试 MybatisServiceImpl

package com.service;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.App;
import com.bean.User;

/**
* @Description springboot 整合 mybatis 增删改查测试
* @author 欧阳
* @since 2019年4月11日 下午4:34:45
* @version V1.0
*/

@RunWith(SpringRunner.class)
@SpringBootTest(classes={App.class})
public class MybatisServiceTest {

	@Autowired
	private MybatisService mybatisService;
	
	@Test
	public void testInsertUser() {
		mybatisService.insertUser(new User("14", "mybatis"));
		System.out.println("Yes");
	}

	@Test
	public void testUpdateUser() {
		mybatisService.updateUser(new User("14", "mybatis1.1"));
		System.out.println("Yes");
	}

	@Test
	public void testSelectUser() {
		List<User> users = mybatisService.selectUser();
		for(User user : users) {
			System.out.println(user);
		}
		System.out.println("Yes");
	}

	@Test
	public void testDeleteUser() {
		mybatisService.deleteUser("14");
		System.out.println("Yes");
	}

}

  测试类编写完之后,先别急着运行测试用例,还需要在启动类 App.java 增加注解 @MapperScan("com.mapper") ,表示扫描包 com.mapper 下的 Mapper 并注册到Spring容器。

六、测试结果

  测试结果全部通过,增删改查功能正常,springboot 整合 Mybatis 完成。
测试结果全部通过

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lytao123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值