之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类、mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能。mybatis 插件自动生成的mapper 实现了大部分基本、通用的方法,如:insert、update、delete、select 等大概20个左右方法,都是比较基础的增删改查,这些通用Mapper提供的方法基本都能满足各种单表操作需求。

但是,在实际工作中通用Mapper并不能满足所有的工作,或是某个业务需要手写 sql 语句、或是多表关联时,该怎么办呢? 这就需要额外的一些自定义的mapper 实现一些特定的功能。下面就来介绍自定义mapper 的实现。

springboot中mybatis字段如何映射(SpringBoot整合)(1)

一、快速实现

首先需要创建一个项目并整合mybatis等相关框架,这个之前介绍过这里不再细说。直接在原来的基础上实现。《Spring Boot如何使用Mybatis XML 配置版》

1、创建自定义 mapper

在com.weiz.mapper 包中,创建 SysUserMapperCustom 接口

package com.weiz.mapper; import com.weiz.pojo.SysUser; import java.util.List; public interface SysUserMapperCustom { List<SysUser> queryUserSimplyInfoById(String userId); }

SysUserMapperCustom 是一个接口,这里只定义了一个方法:queryUserSimplyInfoById 。

2、创建对应的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.weiz.mapper.SysUserMapperCustom" > <!-- 查询用户信息 --> <select id="queryUserSimplyInfoById" resultType="com.weiz.pojo.SysUser"                  parameterType="java.lang.String" > select * from sys_user where id = #{id,jdbcType=VARCHAR} </select> </mapper>

说明:

  id:对应的就是 接口名,

  resultType:返回的是结果类型,

  parameterType:参数的类型,

3、Service 调用

首先在UserService接口中增加queryUserByIdCustom方法,然后在对应的 UserServiceImpl 实现类中,注入SysUserMapperCustom 。最后实现queryUserByIdCustom 方法,在方法中调用前面自定义的mapper 类中方法即可。具体代码如下:

// 1. 在UserServiceImpl 中注入SysUserMapperCustom @Autowired private SysUserMapperCustom userMapperCustom; // 2. 实现接口方法,调用 @Override public SysUser queryUserByIdCustom(String userId) { List<SysUser> userList = userMapperCustom.queryUserSimplyInfoById(userId); if (userList != null && !userList.isEmpty()) { return (SysUser)userList.get(0); } return null; }

二、测试

首先在原先的MybatisController 创建一个测试方法。

@RequestMapping("/queryUserByIdCustom") public JSONResult queryUserByIdCustom(String userId) { return JSONResult.ok(userService.queryUserByIdCustom(userId)); }

启动项目,并在浏览器中输入地址:http://localhost:8080/mybatis/queryUserByIdCustom?userId=200425AYXA733M5P

springboot中mybatis字段如何映射(SpringBoot整合)(2)

最后

以上,就把Spring Boot 中mybatis 如何通过自定义mapper 实现多表关联查询介绍完了,实现起来比较简单。上面的例子比较简单,没有做多表关联,大家自己写的时候,可以试试复杂的多表关联。

这个系列课程的完整源码,也会提供给大家。大家私信我(章为忠学架构),回复:springboot源码 。获取这个系列课程的完整源码。

推荐阅读:

Spring Boot如何整合Quartz 实现定时任务

Spring Boot入门系列(八)整合定时任务Task,一秒搞定定时任务

Spring Boot入门系列(十五)Spring Boot 开发环境热部署的配置

Spring Boot 使用JdbcTemplate操作数据库,配置多数据源

Maven快速入门(二)手动创建maven项目hellomaven

Maven快速入门(一)Maven介绍及环境搭建

史上最强《Java 开发手册》泰山版,阿里出品,必属精品

Spring Boot入门系列(十三)如何实现事务,极简版!

,