基于上篇文章,这篇主要说下如何集成 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 测试结果如下: