【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus
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啦:
参考博文:
博客示例及相关代码已上传至GitHub:
【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus的更多相关文章
- 【分布式】-- 基于Nacos、OpenFeign搭建的微服务抽奖系统后台小案例
1.项目介绍 最近入项目之前要求熟悉一下SpringCloud Nacos微服务基于Feign接口调用并整合Swagger2进行接口文档展示给前端,所以自己按照要求来编写并整合了一套基于SpringC ...
- 18家大厂Java面试题整理了350道(分布式+微服务+高并发)
一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大 ...
- GitHub上最火的SpringCloud微服务商城系统项目,附全套教程
项目介绍 mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich.Spring Boot 2.MyBatis.Docker.Elasticsearch等核心技术 ...
- 集群/分布式/微服务/SOA 转
https://www.cnblogs.com/Java3y/p/9479410.html 二.集群/分布式/微服务/SOA是什么? 像我这种技术小白,看到这些词(集群/分布式/微服务/SOA)的时候 ...
- Java进阶专题(二十二) 从零开始搭建一个微服务架构系统 (上)
前言 "微服务"一词源于 Martin Fowler的名为 Microservices的,博文,可以在他的官方博客上找到http:/ /martinfowler . com/art ...
- .NET Core微服务 权限系统+工作流(二)工作流系统
一.前言 接上一篇 .NET Core微服务 权限系统+工作流(一)权限系统 ,再来一发 工作流,我在接触这块开发的时候一直好奇它的实现方式,翻看各种工作流引擎代码,探究其实现方式,个人总结出来一个核 ...
- zuul 路由网关 微服务架构系统中
在微服务架构中,基本包含以下常见的组件.服务注册与发现.服务消费.负载均衡.断路器.只能路由.配置管理等.一个简单的微服务架构系统如下 一.Zuul简介 Zuul的主要功能是路由转发和过滤器.路由功能 ...
- 微服务架构 | 11.1 整合 Seata AT 模式实现分布式事务
目录 前言 1. Seata 基础知识 1.1 Seata 的 AT 模式 1.2 Seata AT 模式的工作流程 1.3 Seata 服务端的存储模式 1.4 Seata 与 Spring Clo ...
- spring cloud + mybatis 分布式 微服务 b2b2c 多商户商城 全球部署方案
用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B ...
随机推荐
- Day17_106_IO_利用Buffered和BufferWriter完成复制
利用Buffered和BufferWriter完成复制 代码示例: 用BufferedReader 和 BufferWriter完成复制 import java.io.*; public class ...
- 使用defineProperty实现自定义setter, 简化前端Angular的重构工作
一.问题场景 Angular的双向绑定给我们开发提供了很大的遍历,将父scope的引用变量作为参数传递给子指令,这样就可以方便的在父作用域内进行业务操作,数据变更会自动传递到子指令.但是如果你基于一个 ...
- POJ1324贪吃蛇(状态压缩广搜)
题意: 给你一个地图,有的地方能走,有的地方不能走,然后给你一条蛇,问你这条蛇的头部走到1,1的位置的最少步数,注意,和贪吃蛇不太一样,就是蛇咬到自己身体的那个地方,具体怎么不一样自己模拟 ...
- UVA10341解方程(二分)
题意: 给你一个方程 F[x] = pe^-x + qsin(x) + rcos(x) + stan(x) + tx^2 + u = 0(0<=p,r<=20,-20<= ...
- Win64 驱动内核编程-22.SHADOW SSDT HOOK(宋孖健)
SHADOW SSDT HOOK HOOK 和 UNHOOK SHADOW SSDT 跟之前的 HOOK/UNHOOK SSDT 类似,区别是查找SSSDT的特征码,以及根据索引计算函数地址的公式,还 ...
- 【python】Leetcode每日一题-寻找旋转排序数组中的最小元素2
[python]Leetcode每日一题-寻找旋转排序数组中的最小元素2 [题目描述] 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组nums ...
- RxJava线程控制
RxJava中的线程转换主要通过下面两个方法: 1.subscribeOn 2.observeOn 一.subscribeOn 1.调用一次subscribeOn时: Observable obser ...
- 【mybatis】mybatis分页拦截器搭配bootstrap-table使用
提前说明: 这一种方式已被我自己pass掉了,已经被新的方式迭代了.但是记录下自己曾经的成果还是有必要的,而且里面的思想还是不变的,另外技术不就是在不断地迭代中升级吗.千万不要想着一步完美,那样会让你 ...
- dispatcherServlet-servlet.xml(SSM maven 项目)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- java面试一日一题:如何设计一款垃圾回收器
问题:如果让你设计一个垃圾回收器,你会考虑哪些问题 分析:该问题主要考察对java中垃圾回收器的理解,要理解怎么回收:一款好的垃圾回收器有哪些衡量指标 回答要点: 主要从以下几点去考虑, 1.垃圾回收 ...