SpringBoot整合Mybatis(基于XML方式)
以往都是整合Spring+SpringMVC+Mybatis这个三个框架,今天用SpringBoot整合了Mybatis,发现这个比之前的SSM的整合方便的太多,省去大量的配置文件。因为Spring Boot中对此做了进一步的简化,使MyBatis基本上可以做到开箱即用,这也为什么SpringBoot这么火的原因,本文就来看看在Spring Boot中MyBatis要如何使用,话不多说,直接进入正题。
1、首先创建一个SpringBoot项目。



2、创建成功之后查看一下pom里面的配置信息。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.thr</groupId>
<artifactId>springboot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、修改SpringBoot的配置文件
注意:我们不使用默认生成的application.properties文件,而使用更加简洁的application.yml文件。将resource文件夹下原有的application.properties文件删除,创建application.yml配置文件(注:SpringBoot底层会把application.yml文件解析为application.properties),创建的application.yml配置如下所示。
#配置端口
server:
port: 8080
#数据库连接信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
username: root
password: 123456
#mybatis的相关凭配置
mybatis:
#mapper的xml位置和别名
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.thr.entity
#开启驼峰命名
configuration:
map-underscore-to-camel-case: true
4、创建数据库。
-- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` int(11) NULL DEFAULT NULL, `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;

5、然后在src/java/main下分别创建entity实体类、Dao接口、Service接口、ServiceImpl实现类和Controller控制类。在src/java/resources下创建mapper映射文件(mapper/UserMapper.xml)。
--User实体类:
public class User {
private Long id;//编号
private String username;//用户名
private String password;//密码
private Integer age;//年龄
private String address;//地址
//getter、setter省略
}
--UserMapper接口:
@Repository
public interface UserMapper {
//查询所有用户信息
List<User> findAll();
//根据id查询用户信息
User findUserById(Integer id);
//添加用户信息
void addUser(User user);
//修改用户信息
void updateUserById(User user);
//删除用户信息
void deleteUserById(Integer id);
}
--UserService接口:和上面UserMapper接口中的方法是一样的,所有就不贴了。
--UserServiceImpl实现类:
@Service("userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public User findUserById(Integer id) {
return userMapper.findUserById(id);
}
@Override
public void addUser(User user) {
userMapper.addUser(user);
}
@Override
public void updateUserById(User user) {
userMapper.updateUserById(user);
}
@Override
public void deleteUserById(Integer id) {
userMapper.deleteUserById(id);
}
}
--UserController控制类:
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查询所有用户信息
* @return
*/
@GetMapping(value = "/findAll")
public List<User> findAll(){
List<User> userList = userService.findAll();
return userList;
}
/**
* 根据id查询用户信息
* @param id
* @return
*/
@GetMapping(value = "/findUserById/{id}")
public User findUserById(@PathVariable(value = "id") Integer id){
return userService.findUserById(id);
}
/**
* 添加用户信息
* @param user
*/
@PostMapping(value = "/addUser")
public void addUser(User user){
user.setUsername("John");
user.setPassword("123456");
user.setAge(22);
user.setAddress("中国重庆");
userService.addUser(user);
}
/**
* 修改用户信息
* @param user
*/
@PutMapping(value = "/updateUserById")
public void updateUserById(User user){
user.setId(3L);
user.setUsername("Marry");
user.setPassword("123456");
user.setAge(20);
user.setAddress("中国湖南");
userService.updateUserById(user);
}
/**
* 删除用户信息
* @param id
*/
@DeleteMapping(value = "/deleteUserById/{id}")
public void deleteUserById(@PathVariable(value = "id") Integer id){
System.out.println("Delete请求...");
userService.deleteUserById(id);
}
}
--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.thr.dao.UserMapper">
<select id="findAll" resultType="com.thr.entity.User">
select * from t_user;
</select>
<select id="findUserById" resultType="com.thr.entity.User">
select * from t_user where id = #{id};
</select>
<insert id="addUser" parameterType="com.thr.entity.User">
insert into t_user (username,password,age,address) values (#{username},#{password},#{age},#{address});
</insert>
<update id="updateUserById" parameterType="com.thr.entity.User">
update t_user set username=#{username},password=#{password},age=#{age},address=#{address} where id=#{id}
</update>
<delete id="deleteUserById" parameterType="int">
delete from t_user where id=#{id}
</delete>
</mapper>
6、项目整体目录。

最后打开类SpringbootMybatisApplication类,这个是SpringBoot的启动类。我们需要在里面添加一个注解@MapperScan
注意:@MapperScan("com.thr.dao")这个注解非常的关键,这个对应了项目中mapper(dao)所对应的包路径,很多同学就是这里忘了加导致异常的。如果不在启动类这里加,也可以在Mapper类上面添加注解@Mapper,建议使用上面那种,不然每个Mapper加个注解也挺麻烦的。
@SpringBootApplication(scanBasePackages={"com.thr.*"})
@MapperScan("com.thr.dao")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
7、运行启动类,我们使用POSTMAN进行测试。
(1)、查询所有用户信息:(GET请求)http://localhost:8080/user/findAll

(2)、根据id查询用户信息:(GET请求)http://localhost:8080/user/findUserById/1

(3)、添加用户信息:(POST请求)http://localhost:8080/user/addUser


(4)、根据id修改用户信息:(PUT请求)http://localhost:8080/user/updateUserById

(5)、根据id删除用户:(DELETE请求)http://localhost:8080/user/deleteUserById/4


浙公网安备 33010602011771号