1.整合MyBatis-Plus背景

【分布式】-- 基于Nacos、OpenFeign搭建的微服务抽奖系统后台小案例

本篇是基于上一篇博文微服务抽奖系统后台对持久层MyBatis进行更换,并整合MyBatis-Plus替换掉原来的MyBatis框架为目的来进行整合说明的。

1.1.为什么要使用MP

基于MyBatis-Plus本身jar包底层就包含了MyBatis的基本jar,是在MyBatis基础上的进一步扩展,而且就如同使用JPA一样,不需要我们再去编写基础的xml与注解sql。

可以使用注解方式完成基本的表与PoJo之间的映射关系。

2.基于抽奖系统整合MyBatis-Plus

基于provider-product6700服务方进行添加配置。

2.1.配置pom依赖

 <!--mybatis-plus插件-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>

2.2.对应的application.yml配置

#整合mybatis-plus配置
mybatis-plus:
#配置Mapper映射文件
mapper-locations: classpath:/mybatis/mapper/*.xml
# 配置Mybatis数据返回类型别名(默认别名为类名)
type-aliases-package: com.fengye.springcloud.entities
configuration:
#自动驼峰命名
map-underscore-to-camel-case: false #配置控制台打印日志Debug
logging:
level:
com.jd.mapper: debug

2.3.修改Mapper与Service实现

基于MyBatis-Plus实现Mapper层直接继承BaseMapper,即可实现基本的增删改查操作,无需再编写基本的sql语句,十分清爽。而在ServiceImpl中调用也非常方便,直接调用简单的内置方法即可。

Mapper:

@Repository
public interface ProductMapper extends BaseMapper<Product> {
}

ServiceImpl:

@Service
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper; @Override
public Product getProductById(Integer id) {
return productMapper.selectById(id);
} @Override
public List<Product> getProductList() {
return productMapper.selectList(null);
} @Override
public Integer insertProduct(Product product) {
return productMapper.insert(product);
}
}

2.4.启动类上添加@MapperScan扫描

使用这个注解之后,在Mapper层上就可以不用添加@Mapper注解了:

@SpringBootApplication
@EnableDiscoveryClient
//主启动类上标注,在XxxMapper中可以省略@Mapper注解
@MapperScan("com.fengye.springcloud.mapper")
public class ProviderProductMain6700 {
public static void main(String[] args) {
SpringApplication.run(ProviderProductMain6700.class, args);
}
}

2.5.关于数据库表与PoJo类映射

在实际过程中,为了实现Mapper API调用的自动化CURD,在配置数据库和PoJo实体类的关系上还是有必要进行一些细节的说明,这些是坑点、也是重点!

数据库实体类POJO:

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("用户实体类")
@TableName("mk_product") //用于指定表名,表名与实体名称不一致时必须使用
public class Product
{
@ApiModelProperty("主键id")
//注意:表主键使用@TableId
//value表示数据库中实际列名,若实体类属性名与表主键列名一致可省略value
@TableId(value = "productId", type = IdType.AUTO) //type指定自增策略
private Integer id; //主键id
@ApiModelProperty("商品名称")
//指定实体类中属性与表中列名的对应关系
@TableField(value = "pname")
private String productName; //商品名称
@ApiModelProperty("中奖率")
//@TableField("winrate")
// 如果开启了map-underscore-to-camel-case: true 自动驼峰命名,
// 那么这里会将winRate修改为win_rate进行sql封装查询,有两种方式处理不对应问题:
//1.设置@TableField("winrate");2.修改map-underscore-to-camel-case: false(不使用驼峰命名方式)
//@TableField(value = "winrate", exist = true) //exist表明数据库表中有没有对应列存在,默认true表示存在
private float winRate; //中奖率 -- 请用户输入小数点后两位
}

数据库表:

对应mybatis-plus配置自动驼峰命名:

#整合mybatis-plus配置
mybatis-plus:
#配置Mapper映射文件
mapper-locations: classpath:/mybatis/mapper/*.xml
# 配置Mybatis数据返回类型别名(默认别名为类名)
type-aliases-package: com.fengye.springcloud.entities
configuration:
#自动驼峰命名
map-underscore-to-camel-case: false

上述为整合MP的主要步骤,整合完成之后即可在项目中实际使用上MyBatis-Plus啦:

参考博文:

Mybatis-Plus的使用 ------ 入门

博客示例及相关代码已上传至GitHub:

LotteryDraw

【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus的更多相关文章

  1. 【分布式】-- 基于Nacos、OpenFeign搭建的微服务抽奖系统后台小案例

    1.项目介绍 最近入项目之前要求熟悉一下SpringCloud Nacos微服务基于Feign接口调用并整合Swagger2进行接口文档展示给前端,所以自己按照要求来编写并整合了一套基于SpringC ...

  2. 18家大厂Java面试题整理了350道(分布式+微服务+高并发)

    一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大 ...

  3. GitHub上最火的SpringCloud微服务商城系统项目,附全套教程

    项目介绍 mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich.Spring Boot 2.MyBatis.Docker.Elasticsearch等核心技术 ...

  4. 集群/分布式/微服务/SOA 转

    https://www.cnblogs.com/Java3y/p/9479410.html 二.集群/分布式/微服务/SOA是什么? 像我这种技术小白,看到这些词(集群/分布式/微服务/SOA)的时候 ...

  5. Java进阶专题(二十二) 从零开始搭建一个微服务架构系统 (上)

    前言 "微服务"一词源于 Martin Fowler的名为 Microservices的,博文,可以在他的官方博客上找到http:/ /martinfowler . com/art ...

  6. .NET Core微服务 权限系统+工作流(二)工作流系统

    一.前言 接上一篇 .NET Core微服务 权限系统+工作流(一)权限系统 ,再来一发 工作流,我在接触这块开发的时候一直好奇它的实现方式,翻看各种工作流引擎代码,探究其实现方式,个人总结出来一个核 ...

  7. zuul 路由网关 微服务架构系统中

    在微服务架构中,基本包含以下常见的组件.服务注册与发现.服务消费.负载均衡.断路器.只能路由.配置管理等.一个简单的微服务架构系统如下 一.Zuul简介 Zuul的主要功能是路由转发和过滤器.路由功能 ...

  8. 微服务架构 | 11.1 整合 Seata AT 模式实现分布式事务

    目录 前言 1. Seata 基础知识 1.1 Seata 的 AT 模式 1.2 Seata AT 模式的工作流程 1.3 Seata 服务端的存储模式 1.4 Seata 与 Spring Clo ...

  9. spring cloud + mybatis 分布式 微服务 b2b2c 多商户商城 全球部署方案

    用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B ...

随机推荐

  1. ForkJoinPool的工作原理和使用

    场景:当任务很多,成千上万个,或者单个任务很大,执行起来很耗时间,这时,就可以把任务进行拆分,拆分成多个小任务去执行,然后小任务执行完毕后再把每个小任务执行的结果合并起来,这样就可以节省时间. For ...

  2. 前后端分离中的无痛刷新token机制

    今天我们来说一说前后端分离中的无痛刷新token机制 博主先来分享一波福利,最近挖到的宝藏,刚开始学Java的同学看 https://www.bilibili.com/video/BV1Rx41187 ...

  3. Dubbo学习笔记(二) Dubbo的基本配置

    Check启动检查 根据之前的学习,我们简单理解的Dubbo远程调用的基本流程,服务提供者注册到注册中心,然后服务消费者通过监听注册中心达到远程调用的目的,那么如果注册中心中没有消费者对应的接口会怎么 ...

  4. NumPy之:数据类型对象dtype

    目录 简介 dtype的定义 可转换为dtype的对象 dtype对象 None 数组标量类型 通用类型 内置Python类型 带有.dtype属性的对象 一个字符的string对象 数组类型的Str ...

  5. 0-0 Linux安装在VMvare虚拟机上

    一.安装VMware虚拟机: 双击, 上面一步会提示你输入密钥,你只要双击这个,复制里面的一串码粘贴进去就可以. 点击完成,至此VM虚拟机安装完成. 二.在VMvare虚拟机上安装centos. 1. ...

  6. 03- web表单测试

    软件分为 b/s c/s两种架构 表单测试 1.用户注册,登录,信息提交. 2.用户查询商品. 3.用户订购商品. 4.用户查询订单等. 表单测试实例 表单数据添加测试(一) 添加按钮可用,测试点击添 ...

  7. 软件篇-04-OMPL和FCL用于SLAM轨迹规划

    使用OMPL内置的infoRRTstar算法模块和FCL碰撞检测库实现当前点和目标点的轨迹规划, 参考文章:https://www.cnblogs.com/shhu1993/p/7062099.htm ...

  8. UVA11248 网络扩容(枚举割边扩充)

    题意:      给你一个有向图,问你从1到n的最大流是多少?如果流量大于等于C那么直接输出一个串,否则输出只扩充一条边的流量就可以达到1->n大于等于C的所有边,如果扩充不了就输出另一个串.S ...

  9. SpringMVC中<mvc:default-servlet-handler/>的作用

    问题所在:DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求 ...

  10. 【报错】No converter found for return value of type: class java.util.HashMap

    ssm开发碰到的错误 @ResponseBody的作用是是将java对象转为json格式的数据 @ResponseBody注解标识该方法的返回值直接写回到HTTP响应体中去(而不会被被放置到Model ...