微服务Day01 MP

mybatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息

那么我们怎么知道它操作哪张表?

类名驼峰转下划线作为表明

名为id的字段名作为主键

变量名驼峰转下划线作为表的字段名

常见注解

@TableName:用来指定表名

@TableId:用来指定表中的主键字段信息

@TableField:用来指定表中的普通字段信息

@TableId指定表中的主键字段信息,而表中的自增代表着类型

IdType枚举:

AUTO:数据库自增长

INPUT:通过set方法自行输入

ASSIGN_ID:分配ID接口IdentifierGenerator的方法nextId来生成id默认实现类为DefaultIdentifierGenerator雪花算法

使用@TableField的常见场景:

成员变量名与数据库字段名不一致

成员变量名与is开头且是布尔值

成员变量名与数据库关键字冲突

成员变量不是数据库字段

id为主键类型为自增

name与数据库表中的字段名不一致

isMarried成员变量名与is开头,且是布尔值

order成员变量名与数据库关键字冲突

address 成员变量不是数据库字段

条件构造,设计到复杂的语句

List<Long>ids=List.of(1L,2L,4L);

UpdateWrapper<User>wrapper=new updateWrapper<User>()

.setSql("balance=balance-200")

.in("id",ids);

自定义sql:我们可以利用MybatisPlus的Wrapper来构建复杂的Where条件,然后自己定义SQL语句中剩下的部分

  1. 基于Wrapper构建where条件

List<Long>ids=List.of(1L,2L,4L);

int amount=200;

LambdaQueryWrapper<User>wrapper=new LambdaQueryWrapper<User>().in(User::getId,ids);

//2.自定义SQL语句的调用方法

userMapper.updateBalanceByIds(wrapper,amount);

//3.在mapper方法参数中用Param注解声明wrapper变量名称,必须是ew

void updateBalanceByIds(@Param("ew") LambdaQueryWrapper<User>wrapper,@Param("amount) int amount );

自定义SQL,并使用Wrapper条件

<update id="updateBalanceByIds">

UPDATE tb_user SET balance = balance-#{amount} ${ew.customSqlSegment}

</update>

Service接口

因为Restful风格一般表格都是用JSON格式来传参,所以需要用@RequestBody成功接收参数

因为我们要传的参数User,所以我们要用到BeanUtil来传参

这里我们再次定义一个实参类型来接收参数

用UserQuery参数来接收

而Service层主要是用lambdaQuery()

最后一个就是把返回的结果怎么样,.list就是把它转换成list结果,另外,就是第一个参数就是是否存在,就 和 if test=" !=null"一样的作用,但是lambda的更简单,User::getUsername得到的是字段名

但是我们发现如果多个线程执行一次的时候会出现异常,就是两个人同时访问,但是最后金额就减了一次,所以我们需要进行上锁进行处理

相关推荐
·云扬·21 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
天空属于哈夫克321 小时前
Java 版:利用外部群 API 实现自动“技术开课”倒计时提醒
数据库·python·mysql
eWidget1 天前
随机森林原理:集成学习思想 —— Java 实现多棵决策树投票机制
java·数据库·随机森林·集成学习·金仓数据库
Traced back1 天前
SQL Server 核心语法+进阶知识点大全(小白版)
数据库·sqlserver
资深web全栈开发1 天前
PostgreSQL枚举还是字符串:ENUM vs VARCHAR + CHECK 的权衡
数据库·postgresql
凯子坚持 c1 天前
C++基于微服务脚手架的视频点播系统---客户端(4)
数据库·c++·微服务
OceanBase数据库官方博客1 天前
OceanBase场景解码系列三|OB Cloud 如何稳定支撑中企出海实现数 10 倍的高速增长?
数据库·oceanbase·分布式数据库
m0_561359671 天前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
山岚的运维笔记1 天前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
Data_Journal1 天前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php