携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
1.品牌管理实现
1.1集成MyBatis Plus
1.1.1 关于MyBatis Plus的介绍
简介
Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。
特性
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
- 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
- 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
- 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
支持数据库
任何能使用
MyBatis进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。
- MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb
- 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库
1.1.2MyBatis Plus集成
1)引入依赖包
在mall-service-dependency中引入如下依赖(这个依赖包之前已经引入了,这里无需再次引入):
<!--MyBatis Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
在mall-api中引入如下依赖(编写JavaBean会用到MyBatis Plus的相关注解,引入依赖防止程序编译不通过):
<!--MyBatis Plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
<scope>provided</scope>
</dependency>
2)创建goods-api工程
在mall-api中创建子工程mall-goods-api,用于创建shop_goods数据库表对应的实体Bean和Feign接口。
mall-goods-pai服务中主要用来创建shop_goods数据库表对应的JavaBean
在mall-goods-api中创建com.xz.mall.goods.Brand.java,代码如下:
@Data
@AllArgsConstructor
@NoArgsConstructor
//MyBatisPlus表映射注解
@TableName(value = "brand")
public class Brand {
// 品牌ID
// MyBatisPlus主键策略注解
@TableId(type= IdType.AUTO)
private Integer id;
// 品牌名字
private String name;
// 品牌图片
private String image;
// 品牌首字母
private String initial;
// 品牌排序
private Integer sort;
}
介绍一下主键生成策略
| AUTO | 数据库ID自增 |
|---|---|
| NONE | 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) |
| INPUT | insert前自行set主键值 |
| ASSIGN_ID | 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) |
| ASSIGN_UUID | 分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法) |
| ID_WORKER | 分布式全局唯一ID 长整型类型(please use ASSIGN_ID) ,已过时 |
| UUID | 32位UUID字符串(please use ASSIGN_UUID) ,已过时 |
| ID_WORKER_STR | 分布式全局唯一ID 字符串类型(please use ASSIGN_ID) ,已过时 |
3)商品微服务
在mall-service中创建mall-goods-service微服务,用于操作shop_goods数据库。
创建bootstrap.yml,配置如下:
server:
port: 8081
spring:
application:
name: mall-goods
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/shop_goods?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
cloud:
nacos:
config:
file-extension: yaml
server-addr: 127.0.0.1:8848
discovery:
#Nacos的注册地址
server-addr: 127.0.0.1:8848
# ====================MybatisPlus====================
mybatis-plus:
mapper-locations: mapper/*.xml
type-aliases-package: com.xz.mall.*.model
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#日志配置
logging:
pattern:
console: "%msg%n"
配置说明:
type-aliases-package:指定JavaBean的别名包,和MyBatis用法一样。
mapper-locations:复杂的操作可能需要自己写SQL,SQL可以写到xml文件中,这里指定和Dao对应的xml文件,此时需要在resources中创建一个mapper目录。
map-underscore-to-camel-case:开启驼峰功能,数据库表列名如果有_,可以自动按驼峰命名规则转换。
log-impl:日志开启,方便测试。
创建启动类com.xz.mall.MallGoodsApplication
@SpringBootApplication
@MapperScan(basePackages = {"com.xz.mall.goods.mapper"})
public class MallGoodsApplication {
public static void main(String[] args) {
SpringApplication.run(MallGoodsApplication.class, args);
}
}
此时启动程序,查看Nacos控制台:http://127.0.0.1:8848/nacos 账号和密码都是nacos,效果如下:
本篇主要是讲述了一下关于MyBatis Plus的介绍,还有MyBatis Plus的集成。