一、Mybatis整合流程。
Spring Boot引入Mybatis的起步依赖,若要使用Mybatis正确操作所指定的数据库,诸如MySql一类,还需在application.yml内配置一些数据库相关配置,例如:数据库驱动,数据库连接,数据库用户名以及密码等配置参数。
配置完成后,可以完成编写Controller,Service,Mapper,当使用浏览器去访问时,他们会依次被访问,并最终操作到数据库文件。
二、案例演示。
假定现在需要查询数据库User表指定id的数据,并响应给浏览器。
1.打开IntelliJ IDEA,新建一个Spring Boot工程,新建工程的具体方法可参考第一个Spring Boot程序,新建完成后,首先引入mybatis依赖,打开pom.xml文件添加mybatis起步依赖。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
若要使其正确操作数据库,还需要添加数据库驱动的起步依赖:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
打开application.yml文件,编写数据库相关的配置:
(1)在此之前新建一个Mysql数据库,先需要安装数据库,具体可参考Windows安装MySQL数据库,
使用IDEA自带的工具进行数据库创建,使用SQL语言进行此示例的数据库创建以及示例数据添加:
1) 点击IDEA右侧的数据库,选择打开默认控制台:
2) 在打开的数据库控制台输入以下数据库语句,并全选:
CREATE DATABASE IF NOT EXISTS mybatis;
USE mybatis;
CREATE TABLE IF NOT EXISTS User (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT,
gender TINYINT,
phone VARCHAR(15)
);
INSERT INTO User (id, name, age, gender, phone) VALUES
(NULL, '张三', 28, 1, '13700001111'),
(NULL, '李四', 23, 2, '13700002222'),
(NULL, '王五', 30, 1, '13700003333'),
(NULL, '赵六', 25, 2, '13700004444'),
(NULL, '孙七', 35, 1, '13700005555');
3)点击左上角运行按钮:
4)看见控制台输入以下信息:
5)打开IDEA右侧数据库,并双击新建的表,可以看到新建的数据库内容如下,至此,数据库新建完成:
(2)开始编写yml配置文件,将用户名和密码修改为自己数据库的用户名以及密码即可:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://locathost:3306/mybatis
username: XXXX
password: XXXX
2.新建子包data存放实体类User.java:
package org.example.springbootmybatis.data;
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
public User(){
}
public User(Integer id, String name, Short age, Short gender, String phone){
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
public Short getGender() {
return gender;
}
public void setGender(Short gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
3.新建子包Mapper存放接口UserMapper.java:
package org.example.springbootmybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.example.springbootmybatis.data.User;
@Mapper
public interface UserMapper {
@Select("select * from user where id = #{id}")
public User findById(Integer id);
}
4.新建子包Service存放接口UserService.java:
package org.example.springbootmybatis.service;
import org.example.springbootmybatis.data.User;
public interface UserService {
public User findById(Integer id);
}
5.在子包下新建包include,并新建UserServices.java继承UserService接口,实现UserService接口实现类,重写方法:
package org.example.springbootmybatis.service.include;
import org.example.springbootmybatis.data.User;
import org.example.springbootmybatis.mapper.UserMapper;
import org.example.springbootmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServices implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findById(Integer id) {
return userMapper.findById(id);
}
}
6.新建子包controller存放UserController.java,在类内部添加方法调用Service完成查询:
package org.example.springbootmybatis.controller;
import org.example.springbootmybatis.data.User;
import org.example.springbootmybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findById")
public User findById(Integer id){
return userService.findById(id);
}
}
7.启动服务,访问本地8080端口下的/findById,测试是否运行成功,结合数据库内的数据,可见成功访问到数据库并且成功查询。
在此案例当中,并未像Spring Boot的yml文件配置信息书写及获取中所描述的那样,需要先编写配置文件,再对其进行获取,因为大多数情况下,我们并不需要关注配置信息如何读取,只有极少数情况需要对自定义配置文件进行获取。
三、总结。
这里使用案例讲解了如何使用Spring Boot整合Mybatis的整个流程。