在 pom.xml 中引入 Mybatis
以及测试包
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-test
test
org.springframework
spring-test
org.springframework
spring-test
5.0.5.RELEASE
test
在 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.xml 文件 src/main/java/com/mapper/userMapper.xml
insert into t_user(id, name) values(#{id}, #{name})
update t_user set name=#{name} where id=#{id}
delete from t_user where id = #{id}
编写接口 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 selectUsersAll();
/**
* 删除用户
* @param id
*/
public void deleteUserById(String id);
}
增加 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 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 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 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容器。