在学习了springboot的皮毛之后,我决定用几个项目来帮助自己熟悉springboot,现在我准备使用springboot整合mybatis来做一个简单的用户登陆注册功能,由于本人写的前端太丑,所以这里就只放后端的部分代码供大家参考

整合步骤

步骤一

我们首先肯定需要创建一个springboot的web应用,具体创建方法可以参照我的这篇博客

步骤二

要整合mybatis肯定要导入对应的依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

从这个依赖我们就可以看出,他并不是spring编写的依赖,因为spring编写的springboot依赖都是以spring-boot-starter-xxx开头,它其实是mybatis编写的依赖,那也就是说我们必须要给这个依赖添加版本号

步骤三

到了这一步就该编写相应的代码了,在这里我们首先创建一个数据库表,我们关注的重点是java代码的编写,这里数据库就设计的比较简单,也并没有按照三范式等一些规范的设计

CREATE TABLE user(
	id int,
	name varchar(10)
);

数据库的字段只有两个,一个是用户id,一个是用户姓名
编写好数据库之后就需要打开我们刚才创建好的springboot项目来编写一些springboot的配置,进入application.properties(也可以是yaml或者yml文件),配置数据库相关的信息

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

如果使用的是数据库5,0以下的版本就不需要给driver中加入cj这一级包
配置好数据库信息后需要编写对应的实体类,类名为User

package com.hty.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data//get set方法
@AllArgsConstructor//有参构造
@NoArgsConstructor//无参构造
public class User{
    private Integer id;
    private String name;
}

在这个代码中,我使用的注解是lombok中的注解,关于lombok的内容请自行百度,并不难,就是一个工具包
实体类写完之后,我们就可以开始编写我们的mapper层了
首先创建一个mapper包,并在包下创建一个UserMapper的接口和一个UserMapper.xml的文件
UserMapper接口中为了方便我就只写查询的方法,增删改和查询其实大框架是一样的

@Mapper//一定要加入Mapper注解,如果不加入这个注解在后面Controller层使用的时候就会报错
public interface UserMapper{
	//查询所有的用户
	public List<User> queryAllUser();
}

编写完接口之后我们需要去springboot的配置文件中为我们的实体类起别名,这样方便我们在xml文件中填写,我们在application.properties文件的尾部加上

#实体类起别名
mybatis.type-aliases-package=com.hty.pojo

这里我使用的是包的方式起别名,它会默认将实体类名首字母小写的方式作为别名使用
现在开始编写UserMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hty.mapper.UserMapper">
    <!--开启缓存-->
    <cache/>

    <select id="queryAllUser" resultType="user">
        select * from user;
    </select>
</mapper>

在resultType中如果返回值是一个集合,那么直接写这个集合的泛型就可以了
在这里为了方便我就不编写service层了,我就直接使用controller层调用mapper层
Controller层代码

@Controller
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping(value = "/queryAllUser")
    @ResponseBody
    public List<User> queryAllUser(){
        List<User> users = userMapper.queryAllUser();
        return users;
    }
}

之后启动项目,访问/queryAllUser就可以得到所有的用户信息了

可能会遇到的问题:
如果访问地址之后报错,那么可以尝试给实体类进行序列化,然后在重新启动项目