SpringBoot 整合 Mybatis
在 idea 按步骤新建 SpringBoot 项目。
若只选择了 Web
这个起步依赖,则需要进行 第 1、2 步
。若勾选了 Mybatis
依赖和 MySQL Driver
依赖,则从 第 3 步
开始。
1. 添加 Mybatis 的起步依赖
1 2 3 4 5 6
| <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency>
|
2. 添加数据库驱动坐标
1 2 3 4 5 6
| <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
|
此时的 pom.xml
文件为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?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.2.1.RELEASE</version> <relativePath/> </parent> <groupId>com.rk</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-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> </dependencies>
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
</project>
|
3. 添加数据库连接信息
在 application.properties
中添加数据库的连接信息:
1 2 3 4 5
| spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root
|
4. 创建 user 表
在 test 数据库中创建 user 表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三'); INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');
|
表如下所示:
5. 创建实体 Bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| package com.rk.domain;
public class User { private Long id; private String username; private String password; private String name;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", name='" + name + '\'' + '}'; } }
|
6. 编写 Mapper
1 2 3 4 5 6 7 8 9 10 11
| package com.rk.dao;
import com.rk.domain.User; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper public interface UserMapper { public List<User> queryUserList(); }
|
注意:@Mapper
标记该类是一个 mybatis
的 mapper
接口,可以被 spring boot
自动扫描到 spring 上下文中。
7. 配置 Mapper 映射文件
在 src\main\resources\mapper
路径下加入 UserMapper.xml
配置文件:
1 2 3 4 5 6 7
| <?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.rk.dao.UserMapper"> <select id="queryUserList" resultType="com.rk.domain.User"> select * from user </select> </mapper>
|
8. 在 application.properties 中添加 mybatis 配置信息
1 2 3 4 5
|
mybatis.type-aliases-package=com.rk.domain
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
|
9. 编写测试 Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package com.rk.controller;
import com.rk.dao.UserMapper; import com.rk.domain.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller public class MapperController {
@Autowired private UserMapper userMapper;
@ResponseBody @RequestMapping("/queryUser") public List<User> queryUser(){ List<User> users = userMapper.queryUserList(); return users; } }
|
10. 测试结果
链接:http://localhost:8080/queryUser
结果: