# :-: 建Service和Mapper
## 前言
* 实体类建好了,那么下面我们来建和数据库打交道的`Service`和`Mapper`类 。
* 因为这俩兄弟是为业务服务的,不需要被其他服务调用,所以会放到`applets-demo`这个业务工程内。
* 若其他服务需要调用本服务的一些API,则需要用到微服务远程调用,而不是直接引用`Service`和`Mapper`。
* 微服务远程调用将在下一章节讲解。
## 创建package
在`applets-demo`中新建`service`和`mapper`两个package
![](https://img.kancloud.cn/84/29/8429de2b5a8f03043a617e9897b295ae_480x311.png)
## 创建Service
1. 创建名为`BlogService`的接口类
![](https://img.kancloud.cn/e8/b5/e8b5834d83edb61feab1af2b94ab4a24_471x211.png)
2. 创建名为`BlogServiceImpl`的接口实现类(放在service的imp包下)
![](https://img.kancloud.cn/84/8c/848c35e9399e754638ef039f237f21aa_432x180.png)
## 创建Mapper
1. 创建名为`BlogMapper`的接口类
![](https://img.kancloud.cn/bf/4e/bf4eda2475108fe6da0d8a85a1eb6007_442x210.png)
2. 创建名为`BlogMapper`的XML文件
![](https://img.kancloud.cn/c1/30/c130be888898148a891500b5821d460e_489x218.png)
3. `BlogMapper.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.applets.system.mapper.ActiveMapper">
<!-- 通用查询映射结果 -->
<resultMap id="activeResultMap" type="com.applets.system.entity.Active">
<id column="id" property="id"/>
<result column="active_name" property="activeName"/>
<result column="active_image" property="activeImage"/>
<result column="type" property="type"/>
<result column="active_url" property="activeUrl"/>
<result column="status" property="status"/>
</resultMap>
</mapper>
~~~
4. 注意`BlogMapper.xml`的`namespace`和`resultMap`的`type`要指向正确的地址
5. `namespace`指向对应的`BlogMapper.java`接口类 ,`type`指向对应的`Blog.java`实体类
## 增加配置
1. `BlogMapper`增加mybatis-plus的配置
~~~
package com.applets.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.applets.demo..entity.Blog;
public interface BlogMapper extends BaseMapper<Blog> {
}
~~~
2. `BlogService`增加mybatis-plus的配置
~~~
package com.applets.demo.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.applets.demo.entity.Blog;
public interface BlogService extends IService<Blog> {
}
~~~
3. `BlogServiceImpl`增加mybatis-plus的配置
~~~
package com.applets.demo.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.applets.demo.mapper.BlogMapper;
import com.applets.demo.service.BlogService;
import com.applets.demo.entity.Blog;
import org.springframework.stereotype.Service;
@Service
public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements BlogService{
}
~~~
## 注意
SpringBlade默认的mybatis扫描包名为`com.applets`,不在此目录下的bean无法被mybatis扫描到,但大家作为各自的项目,新的服务肯定会使用其他的包名,这种情况需要自己额外定义一个配置类,配置包扫描的路径,以及mybatis-plus扫描bean-alias的配置。
![](https://img.kancloud.cn/de/78/de78620734a2895a5050d50104d19b9d_735x474.png)
![](https://img.kancloud.cn/87/ca/87ca2ec7451de68cd66cf13f06630eed_962x584.png)
## 结束
好了,与mybatis-plus的集成已经结束,那么下面我们开始与数据库交互的第一步,增删改查的基本做法吧!
- 序
- 快速开始
- 环境要求
- 环境准备
- 工程导入
- 工程运行
- 技术基础
- Java8
- Lambda
- Lambda 受检异常处理
- Stream 简介
- Stream API 一览
- Stream API(上)
- Stream API(下)
- Optional 干掉空指针
- 函数式接口
- 新的日期 API
- Lombok
- SpringMVC
- Swagger
- Mybaties
- Mybaties-plus
- 开发初探
- 新建微服务工程
- 第一个API
- API鉴权
- API响应结果
- Redis 缓存
- 第一个CRUD
- 建表
- 建Entity
- 建Service和Mapper
- 新增API
- 修改API
- 删除API
- 查询API
- 单条查询
- 多条查询
- 分页
- 微服务远程调用
- 声明式服务调用Feign
- 熔断机制 Hystrix
- 开发进阶