SpringBoot整合Mybatis
Springboot是现在目前主流的开发基础框架、也是使用最为广泛的开发框架之一、而MyBatis这个框架的使用时针对操作数据库而言面向程序最为重要的一个框架、随之便是mybatis-plus、针对这两个框架而言、在使用的使用我们需要对他们的配置、约束、文件编写等都要很熟悉的掌握、便花时间进行整合了一个最为基础的Springboot搭建整合mybatis的基础教程。
1、初始化工程
选择Idea默认创建方式
根据步骤进行包名和程序名称的添写
选择相关依赖(默认不选择)
后续省略、这个必备
2、添加依赖
<!--添加父版本支持-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--指定JDK版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--springbootweb支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加mybatis整合springboot-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--连接MySQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok支持简化开发-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--开发测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
添加好依赖之后我们一定要等maven仓库跟新之后在进行后续的操作(不然会找不到指定的资源等错误信息)
3、数据库创建表
User表
id | name | age | |
---|---|---|---|
1 | Jone | 18 | test1@baomidou.com |
2 | Jack | 20 | test2@baomidou.com |
3 | Tom | 28 | test3@baomidou.com |
4 | Sandy | 21 | test4@baomidou.com |
5 | Billie | 24 | test5@baomidou.com |
其对应数据库脚本如下
DROP TABLE IF EXISTS user;
CREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
其对应的数据库 Data 脚本如下:
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
在这里数据库层面我们就完成了
4、工程结构
src
- main
- java
- com
- zkr
- springbootmybatis
- controller(控制层)
- entity(实体类)
- mapper(接口层)
- SpringbootMybatisApplication.java(启动类)
- springbootmybatis
- zkr
- com
- resources
- mapper(mybatis中xml存放位置)
- static(静态资源)
- templates(模板引擎)
- application.yml(配置文件)
- application.properties(配置文件)
- java
- test(测试)
5、实体类编写
实体类对比数据库中的字段和字段类型进行编写、进行lombok简化开发
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private int age;
private String email;
}
6、mapper接口
mapper接口对应着每一个实体类、进行CRUD演示
@Repository("userMapper")
public interface UserMapper {
/**
* 保存一个User对象
* @param user
*/
void saveUser(User user);
/**
* 修改一个User对象
* @param user
*/
void UpdateUser(User user);
/**
* 查询全队User对象
* @return
*/
List<User> listUser();
/**
* 根据Id进行删除一个User对象
* @param id
*/
void deleteUser(Long id);
/**
* 根据Id进行检索一个User对象
* @param id
* @return
*/
User findById(Long id);
}
7、Controller
@RestController // Restful 风格返回json数据
@RequestMapping("/user") //类路径访问地址
public class UserController {
/**
* 依赖注入userMapper接口进行方法调用
* @return
*/
@Autowired
private UserMapper userMapper;
/**
* 查询ListUser
* @return
*/
@GetMapping("/listuser")
public List<User> listUser(){
return userMapper.listUser();
}
/**
* 根据Id检索User对象
* @param id
* @return
*/
@GetMapping("/findById/{id}")
public User findById(@PathVariable("id") Long id){
return userMapper.findById(id);
}
/**
* 根据ID删除一个User对象后查询全部User对象
* @param id
* @return
*/
@RequestMapping("/deleteById/{id}")
public List<User> deleteById(@PathVariable(value = "id") Long id){
userMapper.deleteUser(id);
return userMapper.listUser();
}
/**
* 保存User对象后查询全部User对象
* @return
*/
@RequestMapping("/saveUser")
public List<User> insertUser(){
User user = new User(27L,"张三",22,"amdinop@142.com");
userMapper.saveUser(user);
return userMapper.listUser();
}
}
8、编写mapper.xml
mapper.xml这个每一个实体都对应这个一个xml文件来映射sql语句
id -- 对应mapper接口中的方法名称
namespace -- 指定mapper接口的全路径
parameterType -- 指定输入类型
resultType -- 返回值类型就是对应实体的全路径
<?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.zkr.springbootmybatis.mapper.UserMapper">
<insert id="saveUser" parameterType="com.zkr.springbootmybatis.entity.User">
INSERT INTO
user
VALUES
(#{id},#{name},#{age},#{email})
</insert>
<update id="UpdateUser" parameterType="com.zkr.springbootmybatis.entity.User">
UPDATE
user
SET
name=#{name}
WHERE
id=#{id}
</update>
<delete id="deleteUser">
DELETE
FROM
user
WHERE
id=#{id}
</delete>
<select id="listUser" resultType="com.zkr.springbootmybatis.entity.User">
select * from User
</select>
<select id="findById" resultType="com.zkr.springbootmybatis.entity.User" parameterType="long">
SELECT
*
FROM
user
WHERE
id=#{id}
</select>
</mapper>
9、编写配置文件
这里我们不仅需要配置springboot的配置文件还要配置mybatis所需要的配置文件
如:告诉springboot,mybatis所需要的实体类的位置、实体类对应的mapper.xml文件的位置
还有如果需要可以配置mybatis的全局配置文件的位置也要指定。
#端口映射
server:
port: 8989
spring:
# 数据库驱动连接
datasource:
#mysql8之后需要指定时区和安全连接方式
url: jdbc:mysql://localhost:3306/hebi?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
# mybatis配置实体类的路径
type-aliases-package: com.zkr.springbootmybatis.entity
# mybatis配置mapper.xml路径
mapper-locations: classpath:/mapper/*.xml
# mybatis全局配置的路径
config-location: classpath:/mybatis-config/*.xml
10、启动类标注MapperScan
@MapperScan : 用于扫描mapper接口的位置进行添加到IOC容器
@SpringBootApplication
@MapperScan("com.zkr.springbootmybatis.mapper")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
11、测试
测试代码就不在这里编写了。
以上十步就是最简单的SpringBoot整合MyBatis的步骤、可以进行保存方便日后开发的时候用来查阅。