黑马微服务开发与实战学习笔记_MybatisPlus_P3 扩展功能

系列博客目录



Part1:代码生成器

  1. MyBatis-Plus官网有通过编写生成代码的代码来生成代码的方式,但是我本来就是不想写代码,现在还要写生成代码,显然不够好。
  2. 官网给出了MyBatisX的插件,但是不好用,可以自己试试,是通过鼠标右键点击来生成代码。
  3. 一个比较好用的插件MyBatisPlus,名字和MP就差了个横杠。
    在这里插入图片描述
    在这里插入图片描述
    Step1:首先点击Config Database,配置好要生成代码的数据库。
jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC

在这里插入图片描述
点击测试链接,显示测试成功后,点击OK。

Step2:之后点击Code Generator ,这里我们自己动手生成一下address表的代码。
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3a9e253708f34f539d7d9ffe5154cf5d.png

module就是模块名,如果项目有模块的嵌入,就可以填写子模块名,也可以不填,默认生成在当前模块中。
package就是将我们生成的代码放在哪个包下。
over file就是生成代码的时候遇到相同的文件,是否覆盖。后面的是Id策略。
下面的比如是否生成实体类,如果生成,放在哪。
TablePrefix 就是有哪些表的前缀需要去掉,比如tb_user这个数据库表,可以通过填写tb_,来生产User的实体类。
可以通过下图中一个完整的体系结构感受一下上图填写的内容。
在这里插入图片描述
填写完毕后,可以点击代码生成(生产前不需先建好文件夹)。

Part2:DB静态工具

有的时候Service之间也会相互调用,为了避免出现循环依赖问题,MybatisPlus提供一个静态工具类:Db,其中的一些静态方法与IService中方法签名基本一致,也可以帮助我们实现CRUD功能,如下图所示,但是这里面我们有时候需要不光传给他Id作为参数,还要传实体类的字节码,才能用反射拿到实体类的相关信息,从而得到注解上的类名,表名等来实现增删改查,比如右下方getById(),但是save()不用传字节码文件,因为你已经传了对象给他了。
在这里插入图片描述

案例

静态工具查询

需求:

  • (1) 改造根据id查询用户的接口,查询用户的同时,查询出用户对应的所有地址改造
  • (2) 根据id批量查询用户的接口,查询用户的同时,查询出用户对应的所有地址实现
  • (3) 根据用户id查询收货地址功能,需要验证用户状态,冻结用户抛出异常(练习)

上面的三个需求都需要查用户表和地址表,举例:第(1)个需求,我需要通过id查用户,所以我要查用户表,这时候我在用户业务层也就是UserService中进行操作,由于我还需要查询地址,需要用到AddressService中的功能,也就是我需要把AddressService注入到UserService中。其他需求中也可能会导致将UserService注入到AddressService中,这就可能会导致了循环依赖。第(3)个需求,我是要返回收货地址,但是返回之前我需要判断收货地址所属的用户是否正常,也就是我需要把UserService注入到AddressService中,这就可能会导致了循环依赖。虽然不注入Service,通过Mapper也行,但是Mapper的功能没有Service强大。

需求:改造根据id用户查询的接口,查询用户的同时返回用户收货地址列表。
首先,我们要添加一个收货地址的VO对象:

package com.itheima.mp.domain.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(description = "收货地址VO")
public class AddressVO{
   
   

    @ApiModelProperty("id")
    private Long id;

    @ApiModelProperty("用户ID")
    private Long userId;

    @ApiModelProperty("省")
    private String province;

    @ApiModelProperty("市")
    private String city;

    @ApiModelProperty("县/区")
    privat
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值