基于上篇文章,这篇主要说下如何集成 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 目录,如图:
三、配置读取 xml 文件的路径
在 properties 文件中,配置读取 xml 文件的路径信息,如下:
#################################
## MyBatis 配置
#################################
mybatis.mapper-locations=classpath:mapper/mysql/*.xml
四、创建包
为了让代码目录更加信息明了,需要创建几个包:mapper、service,如图:
五、编写测试代码
实体类 UserInfo.java:
package com.menglanglang.test.springboot.entity;
/**
* @desc 用户信息类
*
* @author 孟郎郎
* @blog http://blog.csdn.net/tzhuwb
* @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 孟郎郎
* @blog http://blog.csdn.net/tzhuwb
* @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 孟郎郎
* @blog http://blog.csdn.net/tzhuwb
* @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 孟郎郎
* @blog http://blog.csdn.net/tzhuwb
* @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 测试结果如下: