Spring Boot 初级入门教程(十八) —— 集成 MyBatis 另外一种开发方式

版权声明:本文为博主原创文章,转载请注明文章链接。 https://blog.csdn.net/tzhuwb/article/details/83183154

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

扫描二维码关注公众号,回复: 4424970 查看本文章
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 测试结果如下:

猜你喜欢

转载自blog.csdn.net/tzhuwb/article/details/83183154