当前位置: 首页 > news >正文

开发实体类

开发实体类之间先在pom文件中加入该依赖

<!--        开发实体类--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency>

我们在实体类中声明各个属性后还需要分别为他们声明get、set方法、该实体类的至少一个构造方法和重写toString方法。虽然idea很强大,可以快速帮我们写好这些方法,但这么多代码写在实体类中难免有些繁杂了,所以我们可以运用注解来实现这些功能,这样就不需要写过多的方法了。

//@Setter //代替了属性的所有set方法
//@Getter //代替了属性的所有get方法
//@ToString //代替了重写的toString方法
@NoArgsConstructor //无参构造方法
@AllArgsConstructor //传入所有参数的构造方法
//@EqualsAndHashCode //代替了hashcode和equals方法@Data //代表上面的那一堆注解,但不包括其中的俩个构造方法的注解
//如果数据库中的表名与实体类的类名不相同,用@TableName("")注解映射

下面就要对实体类中的各个属性进行增强了:

   实体类中属性名与数据库中字段名不相同,需要用@TableField(value=“ ”),进行映射,双引号中写的是数据库中的字段名。

   主键id的自动填充 :

    //@TableId(type= IdType.AUTO) 设置id自增从0开始自增//@TableId(type= IdType.INPUT) id需要手动用set方法写入//@TableId(type= IdType.ASSIGN_ID) id是用雪花算法自动生成id(可兼容数字和字符串)private Integer id;

@TableField(select = false)  表示该字段不参与查询,我们在用select方法查询时不会被显示出来让我们看到,只有我们在查看数据库中的表时才会看到。

@TableField(exist = false)  实体类中某一属性添加了该注解,代表数据库字段中没有该对应字段,同时不会对对数据库进行操作产生影响。

 逻辑删除:

      先来简单解释一下什么是逻辑删除:就比如公司某销冠员工小明辞职了,该公司就需要把关于员工小明的所有信息删除,但如果删除了那么在公司进行总结时,属于销冠的那部分销售记录与盈利金额都会被删除,这就造成了公司实际的销售额与数据库中的不符合。

   为了解决这种问题,就有了逻辑删除,就是数据库表中新增一个字段,该属性用于指明该员工是否还在本公司工作,这样公司在需要删除员工小明信息的时候,就不用删除小明的信息了,只需要修改数据库中小明的该字段信息,让其信息为该公司设置的已辞退的数据就可以了。

    //@TableLogic(value = "0",delval = "1") //value代表没删,delval代表删了//这样在执行删除操作时,实际上执行的sql语句是对表中的该字段进行修改//但执行查询时,该字段为1的会被去掉,查不到了;想查到该字段为1的数据的话,需要自己写sql语句查。private int deleted;

deleted为新增的字段。这样我们在执行delete方法时,代码实际上是去修改被删除员工的deleted字段信息了。(注意:我们写代码时,写的是delete方法的代码,不是update改修方法的代码)

 乐观锁:解释:在直播间卖某产品,该产品数量有限比较少,但直播间准备抢该产品的用户多得多,该产品供不应求。这时我们就需要对该产品用乐观锁,防止出现多个用户同时对最后一件产品进行操作,且都显示操作成功的错误。

乐观锁,是每对该行数据进行修改一次,该字段的值就会增加1;

乐观锁实际上是获取该行数据中的version字段值并进行加1,并把version的值作为where中的修改条件。如果多个用户同时对该同一产品进行操作,则这多个用户获取的version值是一样的,所以最终只有一个人能操作成功。

    @Versionprivate int version;

相关文章:

  • 28. 找出字符串中第一个匹配项的下标
  • 模型 IPO(输入、处理、输出)学习模型
  • 网络协议与攻击模拟_17HTTPS 协议
  • CTFshow web(文件上传158-161)
  • EXTI外部中断
  • 面试经典150题——螺旋矩阵
  • 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
  • C语言第二十六弹---字符串函数(下)
  • Springboot-接入WebSocket服务
  • 链式结构实现队列
  • 优秀的电机驱动MCU:MM32SPIN360C
  • react+ts【项目实战一】配置项目/路由/redux
  • C++类和对象-C++运算符重载->加号运算符重载、左移运算符重载、递增运算符重载、赋值运算符重载、关系运算符重载、函数调用运算符重载
  • C#(C Sharp)学习笔记_编程练习题 _输出奇偶数, 九九乘法表, 猜数字游戏【八】
  • JDK8新增的时间
  • (三)从jvm层面了解线程的启动和停止
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • conda常用的命令
  • egg(89)--egg之redis的发布和订阅
  • java多线程
  • leetcode388. Longest Absolute File Path
  • Map集合、散列表、红黑树介绍
  • select2 取值 遍历 设置默认值
  • Travix是如何部署应用程序到Kubernetes上的
  • 从零开始在ubuntu上搭建node开发环境
  • 欢迎参加第二届中国游戏开发者大会
  • 技术胖1-4季视频复习— (看视频笔记)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 浅谈web中前端模板引擎的使用
  • 区块链分支循环
  • 深度学习中的信息论知识详解
  • 网络应用优化——时延与带宽
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (rabbitmq的高级特性)消息可靠性
  • (solr系列:一)使用tomcat部署solr服务
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)用.Net的File控件上传文件的解决方案
  • ***监测系统的构建(chkrootkit )
  • .NET delegate 委托 、 Event 事件,接口回调
  • .ui文件相关
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [echarts] y轴不显示0
  • [HCIE] IPSec-VPN (手工模式)
  • [HOW TO]如何在iPhone应用程序中发送邮件