首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么时候我们需要软删除?

阅读完本文将会学会 什么软删除? 如何考量是否使用软删除 如何在Spring里实现软删除 1. 前言 我们在开发程序过程中,会遇到一个常见需求——删除表中数据。...2.2 软删除实现方式 添加布尔类型字段 添加类似于is_deleted或者is_active或者is_archived布尔型字段,以此来标记是否删除。...还有相应补偿金要处理; 职位不是被删除被“填补”(或者招聘申请被驳回)。 真实世界并不是级联 假设市场部要从商品目录中删除一样商品,那是不是所有包含了该商品旧订单都要一并消失?...再级联下去,这些订单对应所有发票也要删除?就这么一步步删下去,是不是公司损益报表也要重做了? 这样看起来明显不合理吧。 那我们在实际业务逻辑中是否采用软删除?...= Boolean.FALSE; // getter setter methods } 在上面这段代码中,我们添加了一个布尔类型属性——isDeleted用来标记是否已删除。

1.6K30
您找到你想要的搜索结果了吗?
是的
没有找到

疯了!同事又问我为什么不能用 isXXX

多了都是泪啊。。 最近又有人同事跑过来质疑我: 为什么变量名取名不能用 isXXX 这种方式,这样有什么问题?!...本没什么好写,鉴于有好多小白程序员,今天栈长就把为什么不能用 isXXX 拿出来分享一篇文章吧,希望对有用。...首先我们来看阿里巴巴《Java开发手册》关于 isXXX 怎么定义吧: 【强制】POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。...反例:定义为基本数据类型 Boolean isDeleted 属性,它方法也是 isDeleted(),RPC 框架在反向解析时候,“误以为”对应属性名称是 deleted,导致属性获取不到,进而抛出异常...getter/setter 方法:isMarried/setMarried,有些框架就会去找对应 married 变量,然后就找不到了… 再看变量 graduated,因为都是 boolean 变量

90821

Mongoose学习参考文档

,定义了属性,yyy一个Schema.Type,定义了属性类型 }); 1.3 什么Schema.Type Schema.TypeMongoose内定一些数据类型,基本数据类型都在其中...1.4 Schema.Types NodeJS基本数据类型都属于Schema.Type,另外Mongoose还定义了自己类型 //举例: var ExampleSchema =...两种隐藏对象,相关内容请查看NodeJS-API 1.6 关于Mixed Schema.Types.MixedMongoose定义个混合类型,该混合类型如果未定义具体形式。...remove方法 4.Sub Docs   如同SQL数据库中2张表有主外关系,Mongoose将2个Document嵌套叫做Sub-Docs(子文档)   简单就是一个Document嵌套另外一个...验证异步递归,如果SubDoc验证失败,Document也将无法保存 验证并不关心错误类型,而通过ValidationError这个对象可以访问 7.1 验证器 required 非空验证 min

24.1K90

实现业务数据同步迁移 · 思路一

(好雨知时节,大雨 _ _ _) 时不时呢,会有小伙伴问我这样问题: 1、群主,.tsv文件如何生成? 2、在线项目数据和种子数据不一样,可以下么?...读写分离,但是有2个前提,下文会具体; 3、事务处理,保证数据一致性嘛; 那下边就具体说说,如何来实现。...1、获取集合内完整数据 这里用到了多表联合查询,毕竟SqlSugar不像EFCore那样,可以一次性就把子属性给全部查询出来,感觉就像聚合一样,那在SqlSugar中写法有两种,官方默认Mapper...、主从库数据库类型一致,不然会报错,毕竟不是多库模式; 千万记得新库用来写,所以是主库。...因为系统用整型自增主键ID,所以要考虑好关系表中,rid、mid、pid值,要与对应表id一致,如果一直用GUID字符串的话,就不用考虑这个问题,无脑数据迁移就行.

49010

张高兴 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

核酸检测流程由收集患者基本信息开始,然后收集样本类型,最后出具带有医生姓名核酸检测报告。...此处并没有否认 SQL Server 一款优秀数据库,并且 EF 很多特性在 SQL Server 上表现更好,可以 SQL Server EF Core 最佳实践。...实际数据库设计有很多优秀软件,如 PowerDesigner、Navicat Data Modeler 等,并不需要手动编写创建数据库 SQL,因此 Database First 一种非常高效方式...导航(Navigation)属性数据库表之间关系在实体类中体现。...在设置导航属性之前,首先需要理清楚医院和医生存在着怎样数量关系,医生医院附属,一家医院下面会有多名医生,因此医院和医生之间一对多关系。为了方便理解,下面只保留主键、外键和导航属性

2.4K10

Nodejs和Mongodb连接器Mongoose

同时它也是一个对象数据库,没有表、行等概念,也没有固定模式和结构,所有的数据以文档形式存储(文档,就是一个关联数组式对象,它内部由属性组成,一个属性对应值可能一个数、字符串、日期、数组,甚至一个嵌套文档...MongooseMongoDB一个对象模型工具,基于node-mongodb-native开发MongoDB nodejs驱动,可以在异步环境下执行。...同时它也是针对MongoDB操作一个对象模型库,封装了MongoDB对文档一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。 2. Mongoose能做什么?...Mongoose,因为封装了对MongoDB对文档操作常用处理方法,让NodeJS操作Mongodb数据库变得easy、easy、So easy!...一个属性对应值可能一个数、字符串、日期、数组,甚至一个嵌套文档。)

5.8K41

One to One 数据库模型设计与NHibernate配置

关于NHibernate one to one标签上constrained="true",该标签在外表设置,千万不要在主表设置。...就是说明这个表主键与另一个表主键建立外键约束,也就是在生成SQL脚本时,会为这个表创建外键,如果不加,不会创建外键。...也就是,我们不能单独保留Employee和Photo表,同时还要去掉两者之间关系。...但是这显然不对,我们需要一对一,不是一对多。如果查询Classroom AClass属性,那么就会报错,因为根本不知道应该是X还是Y。...这其实又带来了另外一个问题,这可能NHibernate没有考虑到地方,那就是我们采用软删除,也就是根本不会从数据库删除数据,只是把IS_DELETED置为1。

45020

FreeSql.DbContext ,向"不是真正 ORM" 拜拜

不相信?...ISoftDelete、ITenant; 我们没有这个限制,只要过滤器表达式解析成功,就算可用; 使用在任何实体时候,只要 [实体].IsDeleted == false 能解析能过,就算可用;...; 清除 entitys 内自增属性值、Guid 类型值,那这个 entitys 将变为可 Add 状态; 进入【打包执行队列】; Update/UpdateRange(entitys) 验证 entitys...,不适合商用; 总结 为什么写这篇文章,时常看见有人某某 orm 不是真正 orm,没有 OO 思想。...但是我们也有自己特点,不是?我们可以做到多种数据库使用习惯一致性,这点 EFCore 目前没有办法解决难题。 从细节出发,我们口号:做 .NETCore 最方便 ORM!

1.3K10

FreeSql.DbContext ,向"不是真正 ORM" 拜拜

不相信?...ISoftDelete、ITenant; 我们没有这个限制,只要过滤器表达式解析成功,就算可用; 使用在任何实体时候,只要 [实体].IsDeleted == false 能解析能过,就算可用;...; 清除 entitys 内自增属性值、Guid 类型值,那这个 entitys 将变为可 Add 状态; 进入【打包执行队列】; Update/UpdateRange(entitys) 验证 entitys...,不适合商用; 总结 为什么写这篇文章,时常看见有人某某 orm 不是真正 orm,没有 OO 思想。...但是我们也有自己特点,不是?我们可以做到多种数据库使用习惯一致性,这点 EFCore 目前没有办法解决难题。 从细节出发,我们口号:做 .NETCore 最方便 ORM!

96730

Apollo 源码解析 —— Portal 创建 Namespace

彩蛋 ---- 阅读源码最好方式,使用 IDEA 进行调试 Apollo 源码,不然会一脸懵逼。...概述 老艿艿:本系列假定胖友已经阅读过 《Apollo 官方 wiki 文档》 ,特别是 《Apollo 官方 wiki 文档 —— 核心概念之“Namespace”》 。...流程 下面,我们先来看看 AppNamespace 和 Namespace 实体结构 老艿艿:因为 Portal 管理后台,所以从代码实现,和业务系统非常相像。也因此,本文会略显啰嗦。 2....省略了无关代码 } isPublic 字段,是否公用。 Namespace获取权限分为两种: 这里获取权限相对于 Apollo 客户端来说。...当校验 App 不存在时,抛出 BadRequestException 异常。 第 19 至 26 行:拼接并设置 AppNamespace name 属性

1.2K10

一步一步创建ASP.NET MVC5程序(五)

AutoMapper提供了一些简单配置,还有一些简单映射测试。真正问题可能“为什么使用对象-对象映射呢”?...关注一层通常和关注另一层发生冲突,因此对象-对象间映射来隔离模型model,这样就只会影响每一层关注类型。...:CreatedAt,PublishedAt,IsDeleted 类型都和领域模型Post.cs实体类中数据类型不同了。..."" : "否")) //将布尔类型映射成字符串类型/否 ; //将视图实体映射到领域实体 cfg.CreateMap.../tag/v1.5 本文学习到此结束,本系列未完待续,我们下期再见…… 如果喜欢Rector本系列文章,请为我点个大大赞,以支持Rector在后续写作中更有基(激)情,哈哈。。。

1.6K100

SpringBoot高级篇JdbcTemplate之数据查询上篇

来代替具体取值,然后传参 传参有两种姿势,一个传入Object[]数组;另外一个借助java不定长参数方式进行传参;两个占位替换都是根据顺序来,也就是如果有一个值想替换多个占位符,那就得血多次...高级使用 当sql返回列名和POJO属性名可以完全匹配上的话,上面的这种写法就显得非常冗余和麻烦了,我需要更优雅简洁使用姿势,最好就是直接传入POJO类型,自动实现转换 如果希望得到这个效果,需要就是下面这个了...: BeanPropertyRowMapper // 更简单方式,直接通过BeanPropertyRowMapper来实现属性赋值,前提sql返回列名能正确匹配 moneyPO = jdbcTemplate.queryForObject...(java.lang.String, java.lang.Class, java.lang.Object...) // 根据测试,这个类型,只能基本类型 String sql2 = "select...根据sql类型 有两种sql传参方式 一个写完整sql语句,就和我们普通sql查询一样;问题存在注入风险 其次使用占位符(?), 实际值通过参数方式传入IV.

3.6K20

MyBatis-Plus 常用注解

,即user表 # 通过@TableName解决问题 在实体类类型添加@TableName("t_user"),标识实体类对应表,即可成功执行SQL语句 //设置实体类所对应表名 @TableName...Process finished with exit code 0 # @TableIdvalue属性 若实体类中主键对应属性为id,而表中表示主键字段为uid,此时若只在属性id添加注解@TableId...首先是一个符号位,1bit标识,由于long基本类型在Java中带符号,最高位符号位,正数0,负数1,所以id一般正数,最高位0。...# 情况1 若实体类中属性使用驼峰命名风格,而表中字段使用下划线命名风格 例如实体类属性userName,表中字段user_name 此时MyBatis-Plus会自动将下划线命名风格转化为驼峰命名风格...Process finished with exit code 0 # 情况2 若实体类中属性和表中字段不满足情况1 例如实体类属性name,表中字段username 此时需要在实体类属性使用

37110

SpringBoot系列教程JPA之新增记录使用姿势

Java中变量命令推荐驼峰结构,那么 isDeleted 又如何与表中 is_deleted 关联呢? POJO中成员变量类型如何与表中保持一致呢,如果不一致会怎样呢?...,默认用类名,即上面如果不指定那么,那么默认与表 moneypo 绑定 另外一个常见方式在类添加注解 @Table,然后指定表名,也是可以 @Data @Entity @Table(name =...其他 到这里这个POJO已经创建完毕,后续表中添加记录也可以直接使用它了,但是还有几个问题没有明确答案,先提出来,期待后文可以给出回答 POJO属性类型与表中类型 mysql表中列可以有默认值,...在JPA规范中,并不是所有的类型属性都可以持久化,下表列举了可映射为持久化属性类型: 分类 类型 基本类型 byte、int、short、long、boolean、char、float、double...为什么会这样子呢,我们看下sql怎样 ? 直接把id给丢了,也就是我们设置id不生效,我们知道@GeneratedValue 这个注解指定了id增长方式,如果我们去掉这个注解会怎样 ?

1.3K20

React、TypeScript、NodeJS 和 MongoDB 搭建 Todo App

NodeJS, Express, MongoDB 和 TypeScript 设计 API 启动 如果新手,可以看看《TypeScript 实用指南》,或者从《如何用 Node JS、Express...yarn add -D @types/node @types/express @types/mongoose @types/cors 现在,TypeScript 不会再对提示错误——它将使用这些类型来定义我们刚刚安装库...接下来,我使用类型转换来避免拼写错误,并限制 body 变量与 ITodo 类型匹配,然后基于该模块创建一个新 Todo。...就是,现在如果我们能成功连接 MongoDB,服务器就会启动,否则,会抛出错误。 我们现在已经通过 Node、Express、TypeScript 和 MongoDB 完成 api 构建。...: ITodo } 这里, ITodo 接口需要跟 API 返回数据类型一样。这里没有 mongoose , 所以需要加一些额外属性来匹配 API 定义数据类型

16.9K30

Python_关于pymongo与bso

__PyMongo模块主页 下载PyMongo模块时 它会有一个相对应bson模块 也就是 PyMongo模块实现是基于和它一起bson模块 该bson模块 并非我们用 pip install...如果有更好解决方法 欢迎指出 ** bson模块 ** 一种类json一种二进制形式存储格式,简称Binary JSON,它和JSON一样,支持内嵌文档对象和数组对象,但是BSON...有JSON没有的一些数据类型,如Date和BinData类型; BSON有三个特点:轻量性、可遍历性、高效性,但是空间利用率不是很理想 MongoDB使用了BSON这种结构来存储数据和网络数据交换...; 比如 这是MongoDB 中一条记录 也是 一个简单BSON结构体,其中每一个element都是由key/value对组成 把这种格式转化成文档这个概念(Document),因为BSON...schema-free,所以在MongoDB中所对应文档也有这个特征 ; Document可以嵌套 如 key: tagGroup marketing 作为一个对象存在 {

1.1K30
领券