在前面两篇文章《Spring Boot 初级入门教程(十五) —— 集成 MyBatis》和《Spring Boot 初级入门教程(十七) —— 通过 Oracle 数据库测试已集成 MyBatis(附源码)》中,介绍了如何在 SpringBoot 中集成 MyBatis 以及通过 MySQL 和 Oracle 数据库来测试,这篇简单再聊聊集成 MyBatis 后的另外一种开发方式。
一、添加 MyBatis 依赖包
在 pom 文件中,添加支持 MyBatis 的依赖包,和教程十五中一样,不再赘述。
二、新建存放 xml 的目录
在 resources 目录下,创建目录,和教程十七中一样,不再赘述。
三、配置读取 xml 文件的路径
在 properties 文件中,配置读取 xml 文件的路径信息,和教程十七中一样,不再赘述。
四、创建包
为了让代码目录更加信息明了,需要创建几个包。这里不需要原来的 mapper 包,只需要 service,以及在 service 包下再创建存放实现类的包 Impl(大写是IMPL,小写是impl),另外创建一个 common 包,用来存放共通代码,如图:

五、编写测试代码
实体类 UserInfo.java 复用教程十五中的类即可。
SQL 脚本 mybati-mapper2.xml(这里通过 Oracle 数据库测试,所以放在 mapper/oracle 下):
- <?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.MyBatisMapper2">
- <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="selectUserList2" resultMap="UserMap">
- select * from user_info
- </select>
- <select id="selectUser2" parameterType="java.lang.Integer" resultMap="UserMap">
- select * from user_info where id = #{id,jdbcType=INTEGER}
- </select>
- </mapper>
注意:Mapper 接口 MyBatisMapper.java 不需要创建了。
数据库接口查询封装类 DaoHelper.java,放在 common 包下:
- package com.menglanglang.test.springboot.common;
- import java.util.List;
- import java.util.Map;
- import org.mybatis.spring.SqlSessionTemplate;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- /**
- * @desc 数据库查询封装
- *
- * @see 封装了基本的查询方法,包括增删改查分页查等。 使用此类时,使用 @Resource 或 @Autowired 注解注入。
- * @author 孟郎郎
- * @blog http://blog.csdn.net/tzhuwb
- * @version 1.0
- * @date 2018年10月19日下午4:25:20
- */
- @Component
- public class DaoHelper {
- @Autowired
- private SqlSessionTemplate sqlSessionTemplate;
- public DaoHelper(SqlSessionTemplate sqlSessionTemplate) {
- this.sqlSessionTemplate = sqlSessionTemplate;
- }
- /**
- * 根据条件删除记录
- *
- * @param _mybitsId
- * @param obj
- * @return
- */
- public <T> int delete(String _mybitsId, T obj) {
- return sqlSessionTemplate.delete(_mybitsId, obj);
- }
- /**
- * 将指定的对象插入到数据库
- *
- * @param _mybitsId
- * @param obj
- * @return
- */
- public <T> int insert(String _mybitsId, T obj) {
- return sqlSessionTemplate.insert(_mybitsId, obj);
- }
- /**
- * 更新
- *
- * @param _mybitsId
- * @param obj
- * @return
- */
- public <T> int update(String _mybitsId, T obj) {
- return sqlSessionTemplate.update(_mybitsId, obj);
- }
- /**
- * 查询一条记录
- *
- * @param _mybitsId
- * @param object
- * @return
- */
- public Object queryOne(String _mybitsId, Object object) {
- return sqlSessionTemplate.selectOne(_mybitsId, object);
- }
- /**
- * 无条件查询结果集,返回List<T>
- *
- * @param _mybitsId
- * @return
- */
- public <T> List<T> queryForList(String _mybitsId) {
- return sqlSessionTemplate.selectList(_mybitsId);
- }
- /**
- * 查询结果集,查询参数为Map,返回List<T>
- *
- * @param _mybitsId
- * @param _params
- * @return
- */
- public <T> List<T> queryForList(String _mybitsId, Map<String, Object> _params) {
- return sqlSessionTemplate.selectList(_mybitsId, _params);
- }
- /**
- * 查询结果集,查询参数为Object,返回List<T>
- *
- * @param _mybitsId
- * @param _params
- * @return
- */
- public <T> List<T> queryForList(String _mybitsId, Object _params) {
- return sqlSessionTemplate.selectList(_mybitsId, _params);
- }
- }
服务接口类 MyBatisService2.java:
- package com.menglanglang.test.springboot.service;
- import java.util.List;
- import com.menglanglang.test.springboot.entity.UserInfo;
- /**
- * @desc MyBatis服务接口类
- *
- * @author 孟郎郎
- * @blog http://blog.csdn.net/tzhuwb
- * @version 1.0
- * @date 2018年10月19日下午4:30:23
- */
- public interface MyBatisService2 {
- /**
- * 查询用户信息列表
- *
- * @return 用户信息列表
- */
- List<UserInfo> getUserList();
- /**
- * 查询指定用户
- *
- * @param id
- * 用户ID
- * @return 用户信息
- */
- UserInfo getUser(int id);
- }
服务实现类 MyBatisServiceImpl2.java:
- package com.menglanglang.test.springboot.service.Impl;
- import java.util.List;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.menglanglang.test.springboot.common.DaoHelper;
- import com.menglanglang.test.springboot.entity.UserInfo;
- import com.menglanglang.test.springboot.service.MyBatisService2;
- /**
- * @desc MyBatis服务实现类
- *
- * @author 孟郎郎
- * @blog http://blog.csdn.net/tzhuwb
- * @version 1.0
- * @date 2018年10月19日下午4:29:57
- */
- @Service
- public class MyBatisServiceImpl2 implements MyBatisService2 {
- @Autowired
- private DaoHelper daoHelper;
- @Override
- public List<UserInfo> getUserList() {
- return daoHelper.queryForList("com.menglanglang.test.springboot.mapper.MyBatisMapper2.selectUserList2");
- }
- @Override
- public UserInfo getUser(int id) {
- return (UserInfo) daoHelper.queryOne("com.menglanglang.test.springboot.mapper.MyBatisMapper2.selectUser2", id);
- }
- }
测试类 MyBatisController2.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.MyBatisService2;
- /**
- * @desc MyBatis测试控制类
- *
- * @author 孟郎郎
- * @blog http://blog.csdn.net/tzhuwb
- * @version 1.0
- * @date 2018年10月19日下午4:35:18
- */
- @RestController
- @RequestMapping("/mybatis2")
- public class MyBatisController2 {
- @Autowired
- private MyBatisService2 myBatisService2;
- @RequestMapping("/getUsers")
- public List<UserInfo> getUsers() {
- List<UserInfo> list = myBatisService2.getUserList();
- return list;
- }
- @RequestMapping("/getUser")
- public UserInfo getUser() {
- UserInfo user = myBatisService2.getUser(3);
- return user;
- }
- }
六、启动项目并测试
启动项目,浏览器访问 http://localhost:8080/mybatis/getUser 和 http://localhost:8080/mybatis/getUsers 测试结果如下:


原文链接:https://blog.csdn.net/tzhuwb/article/details/83183154