Spring Boot 初级入门教程(十八) —— 集成 MyBatis 另外一种开发方式
2018年10月19日 17:02:21 SpringBoot ⁄ 共 6603字 暂无评论 ⁄ 被围观 2,987次

在前面两篇文章《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 下):

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
  3. <mapper namespace="com.menglanglang.test.springboot.mapper.MyBatisMapper2">  
  4.     <resultMap id="UserMap" type="com.menglanglang.test.springboot.entity.UserInfo">  
  5.         <result column="ID" property="id" jdbcType="INTEGER" />  
  6.         <result column="NAME" property="name" jdbcType="VARCHAR" />  
  7.         <result column="AGE" property="age" jdbcType="INTEGER" />  
  8.     </resultMap>  
  9.   
  10.     <select id="selectUserList2" resultMap="UserMap">  
  11.         select * from user_info  
  12.     </select>  
  13.   
  14.     <select id="selectUser2" parameterType="java.lang.Integer" resultMap="UserMap">  
  15.         select * from user_info where id = #{id,jdbcType=INTEGER}  
  16.     </select>  
  17.   
  18. </mapper>  

注意:Mapper 接口 MyBatisMapper.java 不需要创建了。

数据库接口查询封装类 DaoHelper.java,放在 common 包下:

  1. package com.menglanglang.test.springboot.common;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import org.mybatis.spring.SqlSessionTemplate;  
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.stereotype.Component;  
  9.   
  10. /** 
  11.  * @desc 数据库查询封装 
  12.  *  
  13.  * @see 封装了基本的查询方法,包括增删改查分页查等。 使用此类时,使用 @Resource 或 @Autowired 注解注入。 
  14.  * @author 孟郎郎 
  15.  * @blog http://blog.csdn.net/tzhuwb 
  16.  * @version 1.0 
  17.  * @date 2018年10月19日下午4:25:20 
  18.  */  
  19. @Component  
  20. public class DaoHelper {  
  21.   
  22.     @Autowired  
  23.     private SqlSessionTemplate sqlSessionTemplate;  
  24.   
  25.     public DaoHelper(SqlSessionTemplate sqlSessionTemplate) {  
  26.         this.sqlSessionTemplate = sqlSessionTemplate;  
  27.     }  
  28.   
  29.     /** 
  30.      * 根据条件删除记录 
  31.      *  
  32.      * @param _mybitsId 
  33.      * @param obj 
  34.      * @return 
  35.      */  
  36.     public <T> int delete(String _mybitsId, T obj) {  
  37.         return sqlSessionTemplate.delete(_mybitsId, obj);  
  38.     }  
  39.   
  40.     /** 
  41.      * 将指定的对象插入到数据库 
  42.      *  
  43.      * @param _mybitsId 
  44.      * @param obj 
  45.      * @return 
  46.      */  
  47.     public <T> int insert(String _mybitsId, T obj) {  
  48.         return sqlSessionTemplate.insert(_mybitsId, obj);  
  49.     }  
  50.   
  51.     /** 
  52.      * 更新 
  53.      *  
  54.      * @param _mybitsId 
  55.      * @param obj 
  56.      * @return 
  57.      */  
  58.     public <T> int update(String _mybitsId, T obj) {  
  59.         return sqlSessionTemplate.update(_mybitsId, obj);  
  60.     }  
  61.   
  62.     /** 
  63.      * 查询一条记录 
  64.      *  
  65.      * @param _mybitsId 
  66.      * @param object 
  67.      * @return 
  68.      */  
  69.     public Object queryOne(String _mybitsId, Object object) {  
  70.         return sqlSessionTemplate.selectOne(_mybitsId, object);  
  71.     }  
  72.   
  73.     /** 
  74.      * 无条件查询结果集,返回List<T> 
  75.      *  
  76.      * @param _mybitsId 
  77.      * @return 
  78.      */  
  79.     public <T> List<T> queryForList(String _mybitsId) {  
  80.         return sqlSessionTemplate.selectList(_mybitsId);  
  81.     }  
  82.   
  83.     /** 
  84.      * 查询结果集,查询参数为Map,返回List<T> 
  85.      *  
  86.      * @param _mybitsId 
  87.      * @param _params 
  88.      * @return 
  89.      */  
  90.     public <T> List<T> queryForList(String _mybitsId, Map<String, Object> _params) {  
  91.         return sqlSessionTemplate.selectList(_mybitsId, _params);  
  92.     }  
  93.   
  94.     /** 
  95.      * 查询结果集,查询参数为Object,返回List<T> 
  96.      *  
  97.      * @param _mybitsId 
  98.      * @param _params 
  99.      * @return 
  100.      */  
  101.     public <T> List<T> queryForList(String _mybitsId, Object _params) {  
  102.         return sqlSessionTemplate.selectList(_mybitsId, _params);  
  103.     }  
  104.   
  105. }  

服务接口类 MyBatisService2.java:

  1. package com.menglanglang.test.springboot.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.menglanglang.test.springboot.entity.UserInfo;  
  6.   
  7. /** 
  8.  * @desc MyBatis服务接口类 
  9.  * 
  10.  * @author 孟郎郎 
  11.  * @blog http://blog.csdn.net/tzhuwb 
  12.  * @version 1.0 
  13.  * @date 2018年10月19日下午4:30:23 
  14.  */  
  15. public interface MyBatisService2 {  
  16.   
  17.     /** 
  18.      * 查询用户信息列表 
  19.      *  
  20.      * @return 用户信息列表 
  21.      */  
  22.     List<UserInfo> getUserList();  
  23.   
  24.     /** 
  25.      * 查询指定用户 
  26.      *  
  27.      * @param id 
  28.      *            用户ID 
  29.      * @return 用户信息 
  30.      */  
  31.     UserInfo getUser(int id);  
  32.   
  33. }  

服务实现类 MyBatisServiceImpl2.java:

  1. package com.menglanglang.test.springboot.service.Impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.stereotype.Service;  
  7.   
  8. import com.menglanglang.test.springboot.common.DaoHelper;  
  9. import com.menglanglang.test.springboot.entity.UserInfo;  
  10. import com.menglanglang.test.springboot.service.MyBatisService2;  
  11.   
  12. /** 
  13.  * @desc MyBatis服务实现类 
  14.  * 
  15.  * @author 孟郎郎 
  16.  * @blog http://blog.csdn.net/tzhuwb 
  17.  * @version 1.0 
  18.  * @date 2018年10月19日下午4:29:57 
  19.  */  
  20. @Service  
  21. public class MyBatisServiceImpl2 implements MyBatisService2 {  
  22.   
  23.     @Autowired  
  24.     private DaoHelper daoHelper;  
  25.   
  26.     @Override  
  27.     public List<UserInfo> getUserList() {  
  28.         return daoHelper.queryForList("com.menglanglang.test.springboot.mapper.MyBatisMapper2.selectUserList2");  
  29.     }  
  30.   
  31.     @Override  
  32.     public UserInfo getUser(int id) {  
  33.         return (UserInfo) daoHelper.queryOne("com.menglanglang.test.springboot.mapper.MyBatisMapper2.selectUser2", id);  
  34.     }  
  35.   
  36. }  

测试类 MyBatisController2.java:

  1. package com.menglanglang.test.springboot.controller;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. import com.menglanglang.test.springboot.entity.UserInfo;  
  10. import com.menglanglang.test.springboot.service.MyBatisService2;  
  11.   
  12. /** 
  13.  * @desc MyBatis测试控制类 
  14.  * 
  15.  * @author 孟郎郎 
  16.  * @blog http://blog.csdn.net/tzhuwb 
  17.  * @version 1.0 
  18.  * @date 2018年10月19日下午4:35:18 
  19.  */  
  20. @RestController  
  21. @RequestMapping("/mybatis2")  
  22. public class MyBatisController2 {  
  23.   
  24.     @Autowired  
  25.     private MyBatisService2 myBatisService2;  
  26.   
  27.     @RequestMapping("/getUsers")  
  28.     public List<UserInfo> getUsers() {  
  29.         List<UserInfo> list = myBatisService2.getUserList();  
  30.         return list;  
  31.     }  
  32.   
  33.     @RequestMapping("/getUser")  
  34.     public UserInfo getUser() {  
  35.         UserInfo user = myBatisService2.getUser(3);  
  36.         return user;  
  37.     }  
  38.   
  39. }  

六、启动项目并测试

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

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

给我留言

留言无头像?