基于上篇文章,这篇主要说下如何集成 MyBatis,这样测试时也不用在像 JdbcTemplate 那样在 java 代码中写 sql 语句了。

一、添加 MyBatis 依赖包

在 pom 文件中,添加支持 MyBatis 的依赖包,如下:

<!-- mybatis插件 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>

二、新建存放 xml 的目录

在 resources 目录下,创建 mapper > mysql 目录,如图:

Spring Boot 初级入门教程(十五) —— 集成 MyBatis_MyBatis

三、配置读取 xml 文件的路径

在 properties 文件中,配置读取 xml 文件的路径信息,如下:

#################################
## MyBatis 配置
#################################
mybatis.mapper-locations=classpath:mapper/mysql/*.xml

四、创建包

为了让代码目录更加信息明了,需要创建几个包:mapper、service,如图:

Spring Boot 初级入门教程(十五) —— 集成 MyBatis_Spring_02

五、编写测试代码

实体类 UserInfo.java:

package com.menglanglang.test.springboot.entity;

/**
* @desc 用户信息类
*
* @author 孟郎郎
* @version 1.0
* @date 2018年9月16日下午4:59:40
*/
public class UserInfo {

/**
* 主键
*/
private int id;

/**
* 用户姓名
*/
private String name;

/**
* 用户年龄
*/
private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

}

SQL脚本 mybati-mapper.xml:

<?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.menglanglang.test.springboot.mapper.MyBatisMapper">
<resultMap id="UserMap" type="com.menglanglang.test.springboot.entity.UserInfo">
<result column="ID" property="id" jdbcType="INTEGER" />
<result column="NAME" property="name" jdbcType="VARCHAR" />
<result column="AGE" property="age" jdbcType="INTEGER" />
</resultMap>

<select id="selectUserList" resultMap="UserMap">
select * from user
</select>

<select id="selectUser" parameterType="java.lang.Integer" resultMap="UserMap">
select * from user where id = #{id,jdbcType=INTEGER}
</select>

</mapper>

Mapper接口 MyBatisMapper.java:

package com.menglanglang.test.springboot.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.menglanglang.test.springboot.entity.UserInfo;

/**
* @desc MyBatis Mapper类
*
* @author 孟郎郎
* @version 1.0
* @date 2018年9月16日下午4:56:53
*/
@Mapper
public interface MyBatisMapper {

/**
* 查询用户信息列表
*
* @return 用户信息列表
*/
List<UserInfo> selectUserList();

/**
* 查询指定用户
*
* @param id
* 用户ID
* @return 用户信息
*/
UserInfo selectUser(int id);

}

服务类 MyBatisService.java:

package com.menglanglang.test.springboot.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.menglanglang.test.springboot.entity.UserInfo;
import com.menglanglang.test.springboot.mapper.MyBatisMapper;

/**
* @desc MyBatis服务接口类
*
* @author 孟郎郎
* @version 1.0
* @date 2018年9月16日下午4:56:53
*/
@Service
public class MyBatisService {

@Autowired
private MyBatisMapper myBatisMapper;

/**
* 查询用户信息列表
*
* @return 用户信息列表
*/
public List<UserInfo> getUserList() {
return myBatisMapper.selectUserList();
}

/**
* 查询指定用户
*
* @param id
* 用户ID
* @return 用户信息
*/
public UserInfo getUser(int id) {
return myBatisMapper.selectUser(id);
}

}

测试类 MyBatisController.java:

package com.menglanglang.test.springboot.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.menglanglang.test.springboot.entity.UserInfo;
import com.menglanglang.test.springboot.service.MyBatisService;

/**
* @desc MyBatis测试控制类
*
* @author 孟郎郎
* @version 1.0
* @date 2018年9月16日下午4:54:58
*/
@RestController
@RequestMapping("/mybatis")
public class MyBatisController {

@Autowired
private MyBatisService myBatisService;

@RequestMapping("/getUsers")
public List<UserInfo> getUsers() {
List<UserInfo> list = myBatisService.getUserList();
return list;
}

@RequestMapping("/getUser")
public UserInfo getUser() {
UserInfo user = myBatisService.getUser(2);
return user;
}

}

六、启动项目并测试

启动项目,浏览器访问 http://localhost:8080/mybatis/getUser 和 http://localhost:8080/mybatis/getUsers 测试结果如下:

Spring Boot 初级入门教程(十五) —— 集成 MyBatis_Spring_03

Spring Boot 初级入门教程(十五) —— 集成 MyBatis_入门教程_04