SpringBoot 集成 MyBatis
SpringBoot 知识点目录: SpringBoot 核心知识点整理!
创建项目
首先创建一个 springboot集成mybatis
的 Maven
- WebApp
项目;
默认的项目结构是这样的:
本着 约定大于配置 的原则,我们要修改成 springboot 标准项目结构:
友情提示:
java 目录建完后要右键
->Mark Dictory As
->Sources Root
resources 目录建完后要右键
->Mark Dictory As
->Resources Root
test.java 目录建完后要右键
->Mark Dictory As
->Test Sources Root
test.resources 目录建完后要右键
->Mark Dictory As
->Test Resources Root
test.java
和 test.resources
用不到可以不创建。
Application.java
在引入完依赖以后再写。
1.引入依赖
首先 继承springboot父项目、 引入web支持、lombook的依赖。
这些依赖的最新版都可以在这个网站查到:MavenRepository
<!--继承父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!--引入web支持包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入lombook-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
mybatis-spring-boot-starter 依赖
然后引入 mybatis-spring-boot-starter
的依赖,可以在这个网站查询最新的依赖:mybatis-spring-boot-starter 依赖
说明:由于 springboot 整合 mybatis 版本中默认依赖 mybatis,因此不需要额外引入 mybatis 版本,否则会出现冲突。
<!--整合mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
建立入口类 Application
:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
完整的 pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yusael</groupId>
<artifactId>springboot集成mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>springboot集成mybatis Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--继承父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<dependencies>
<!--引入web支持包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入lombook-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>
<!--整合mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
<build>
<finalName>springboot集成mybatis</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
2.配置文件
修改配置文件 application.properties
;
server.servlet.context-path=/sm
数据库配置文件:
#指定连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#指定驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#指定url
spring.datasource.url=jdbc:mysql://localhost:3306/sm
#指定用户名
spring.datasource.username=root
#指定密码
spring.datasource.password=1234
加入mybatis配置
mybatis 的配置:
#指定mapper配置文件位置
mybatis.mapper-locations=classpath:/com/yusael/mapper/*.xml
#指定起别名来的类
mybatis.type-aliases-package=com.yusael.entity
在入口类 Application
中添加 @MapperScan
@SpringBootApplication
@MapperScan("com.yusael.dao")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
完整的配置文件
server.servlet.context-path=/sm
#指定连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#指定驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#指定url
spring.datasource.url=jdbc:mysql://localhost:3306/sm
#指定用户名
spring.datasource.username=root
#指定密码
spring.datasource.password=1234
#指定mapper配置文件位置
mybatis.mapper-locations=classpath:/com/yusael/mapper/*.xml
#指定起别名来的类
mybatis.type-aliases-package=com.yusael.entity
3. 数据库建表
在 sm
数据库下建立 t_user
表:
CREATE TABLE `t_user` (
`id` varchar(100) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`bir` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4. 开发实体类
在 java.com.yusael.entity
包下创建 User
类;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
}
5. 开发DAO接口以及Mapper
在 java.com.yusael.dao
包下创建 UserDAO
类;
在 resources.com.yusael.mapper
下创建 UserDAOMapper
public interface UserDAO {
void save(User user);
List<User> findAll();
}
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yusael.dao.UserDao">
<!--save-->
<insert id="save" parameterType="User">
insert into t_user values (#{id}, #{name}, #{age}, #{bir})
</insert>
<!--findAll-->
<select id="findAll" resultType="User">
select id,name,age,bir from t_user
</select>
</mapper>
6. 开发Service以及实现
在 java.com.yusael.service
包下创建 UserService
类、UserServiceImpl
类;
// 接口
public interface UserService {
void save(User user);
List<User> findAll();
}
// 实现
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Override
public void save(User user) {
user.setId(UUID.randomUUID().toString());
userDAO.save(user);
}
@Override
public List<User> findAll() {
return userDAO.findAll();
}
}
7. 编写控制器进行测试
在 com.yusael.controller
包下创建 UserController
类;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("findAll")
public List<User> findAll() {
return userService.findAll();
}
@GetMapping("save")
public void save(User user) {
userService.save(user);
}
}
完整的项目结构
开始测试
运行项目;
浏览器输入 localhost:8080/sm/user/save?name=zhangsan&age=25&bir=2012/12/12
来保存一条记录。
回车,页面看不到什么效果;
浏览器再次输入 http://localhost:8080/sm/user/findAll
来查询所有记录;
可以成功的查询出刚刚添加的记录:
[
{
"id": "fb91da88-8a54-4f1b-83e7-09d2217ae2cb",
"name": "zhangsan",
"age": 25,
"bir": "2012-12-11T16:00:00.000+0000"
}
]
尝试多保存几条数据:
localhost:8080/sm/user/save?name=lisi&age=21&bir=2011/11/11
localhost:8080/sm/user/save?name=wangwu&age=18&bir=2014/12/11
localhost:8080/sm/user/save?name=zhaoliu&age=19&bir=2011/6/11
再次查询所有记录: http://localhost:8080/sm/user/findAll