SpringBoot 整合Mybatis
由于之前都是使用Hibernate的,所以研究SpringBoot 整合Mybatis这部分内容花费了一定的时间,做完这个小例子,对Mybatis的理解也有了一定的提升。
一、Mybatis简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
Mybatis是一款优秀的持久层框架,支持定制化SQL、存储过程和高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、在pom.xml中引入Mybatis依赖
SpringBoot要整合Mybatis,首先需要在pom.xml中引入Mybatis的依赖,具体代码如下:
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
三、在application.properties中添加Mybatis的配置信息
添加Mybatis的配置信息,主要是将Mapper资源文件的存放路径和Dao接口文件的存放目录配置到项目中,让项目可以找到对应的文件。配置信息如下所示:
############################################################ # # mybatis配置 # ############################################################ mybatis.mapper-locations=classpath:/mappers/*Mapper.xml mybatis.type-aliases-package=com.oyc.jdbcdemo.dao
四、建立Dao接口和Mapper文件,实现与数据库的关联
根据步骤三配置的信息,我们先在com.oyc.jdbcdemo.dao中建立OyUserDao.java,具体代码如下:
/** * 用户dao接口,Mybatis接口 */ @Mapper public interface OyUserDao { /** * 获取用户列表接口 * @return */ List<OyUser> getUserList(); /** * 根据用户姓名获取用户信息 * @param name * @return */ OyUser getUserByName(@Param("name")String name); }
然后再classpath:/mappers/中建立与OyUserDao相对应的OyUserMapper.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.oyc.jdbcdemo.dao.OyUserDao" > <resultMap id="OyUser" type="com.oyc.jdbcdemo.entity.OyUser"> <id column="id" property="id" jdbcType="VARCHAR"/> <result column="name" property="name" jdbcType="VARCHAR"/> <result column="age" property="age" jdbcType="VARCHAR"/> <result column="sex" property="sex" jdbcType="VARCHAR"/> </resultMap> <select id="getUserByName" resultMap="OyUser" parameterType="String"> select * from oy_user u <where> u.name = #{name} </where> </select> <select id="getUserList" resultMap="OyUser" parameterType="String"> select * from oy_user </select> </mapper>
五、OyUser服务类及其实现类的创建
用户服务类接口:OyUserService.java
/** * @author oyc * @Title: * @Description:用户服务类接口 * @date 2018/7/1414:06 */ public interface OyUserService { //获取用户列表 List<OyUser> getUserList(); //根据用户名称获取用户详情信息 OyUser getUserByName(String name); }
用户服务类接口的实现:OyUserServiceImpl.java
/** * @author oyc * @Title: * @Description: * @date 2018/7/1414:09 */ @Service public class OyUserServiceImpl implements OyUserService { @Resource private OyUserDao oyUserDao; @Override public List<OyUser> getUserList() { return oyUserDao.getUserList(); } @Override public OyUser getUserByName(String name) { return oyUserDao.getUserByName(name); } }
六、用户控制类
OyUserController.java,注入OyUserService,使用服务类OyUserService去调用dao实现对数据库的操作。
/** * @author oyc * @Description:用户控制类 * @date 2018/7/14 14:11 */ @Controller @RequestMapping("/user") public class OyUserController { @Autowired private OyUserService oyUserService; /** * 获取用户列表信息 */ @RequestMapping("/list") public String userList(Model map){ List<OyUser> userList = oyUserService.getUserList(); map.addAttribute("users", userList); return "user"; } /** * 根据用户名获取用户详情信息 * @return */ @RequestMapping("/byname") public String userByName(Model map){ OyUser user = oyUserService.getUserByName("oyc"); map.addAttribute("users", user); return "user"; } }