或许,大家在项目的开发中经常会遇到开关状态,例如0关闭,1开启,直接在数据库也是保存为int或tinyint,这样前端后端数据库都统一了一个值,后端使用Integer去接数据库和前端,看着没有什么大毛病,但是仔细想想会有以下的弊端:

一、内存占用过大

Integer为4个字节共32个比特位,造成了内存资源的严重浪费。

二、违背代码整洁之道

逻辑判断冗余不美观,例如:

if("0".equals(obj.getIsOn)){//业务代码}

显然这对于一个有代码洁癖的人来说是无法忍受的,那么应该怎么解决这个问题呢?

三、解决方案

在实体类中将开关属性定义为Boolean类型,数据库字段设定为bit(1),即一个比特位。这里mybatis或者JPA会自动为我们映射Java bean中的Boolean和数据库中的bit,映射关系是0为false,非0为true,前后端直接传true or false,这样即解决了内存浪费的问题,又使代码更加优雅简洁。

if(obj.getIsOn){//业务代码}

当然这样极易出现NPE,也不是没有解决办法,通过在业务上设置必填项或者默认值即可解决。

感觉对自己有帮助的朋友不妨点个赞关注转发一波,小僧将不胜感激哦

jpa怎么传参到in中_Java中如何处理开关状态的属性字段?相关推荐

  1. java url传参中文乱码问题_java中url传中文参数出现乱码

    缘由:java Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(形成中文乱码).服务器 方法一:编码 咱们须要把request. ...

  2. java 传参需要定义吗_java的传参究竟是按值传递的还是按引用传递的

    这里来弄清楚Java的传参究竟是按值传递的还是按引用传递的. 形参和实参 传参的概念里,有形参和实参的区分.形参是定义方法名和方法体的时候使用的参数,目的是用来接收调用该方法的时候传入的参数:实参是调 ...

  3. java调用python,传参json字符串,含中文传参

    java调用python,传参json字符串 python脚本内容(test.py) # -*- coding: utf-8 -*-def main(input):return input java调 ...

  4. URL传参小用法获取url中的参数

    写页面的时候发现的小用法,记录下来,关于url静态传参的问题. 首先列举下获取URL中参数的几种方法 方法一:正则法 这个正则是寻找&+url参数名字=值+&*/     这里参考网址 ...

  5. @query传参_前端框架vue中query和params传参

    注意(用params传参,F5强制刷新参数会被清空,用query,由于参数适用路径传参的所以F5强制刷新也不会被清空.(传参强烈建议适用string)) 也可以选用sessionstorage/loc ...

  6. jpa怎么传参到in中_Spring Boot中的测试

    简介 本篇文章我们将会探讨一下怎么在SpringBoot使用测试,Spring Boot有专门的spring-boot-starter-test,通过使用它可以很方便的在Spring Boot进行测试 ...

  7. jpa怎么传参到in中_JPA 中 in 的方法 注意参数一定要是List

    本文将为您描述JPA 中 in 的方法 注意参数一定要是List,具体完成步骤:@Query(nativeQuery = true, value = "SELECT aea.`create_ ...

  8. jpa oracle 传参int类型判空_springboot学习-springboot使用spring-data-jpa操作MySQL数据库...

    我们在上一篇搭建了一个简单的springboot应用,这一篇将介绍使用spring-data-jpa操作数据库. 新建一个MySQL数据库,这里数据库名为springboot,建立user_info数 ...

  9. jpa oracle 传参int类型判空_企业级Java开发之图解JPA核心构件

    编者按: 企业级的软件开发中,Java一直都是中流砥柱.在Java EE8之后,Oracle公司把企业级Java标准控制权转交Eclipse基金.最新或·和以后的企业级Java将冠名为Jakarta ...

最新文章

  1. python自加自减_Java自增和自减运算符(++和--)
  2. Xilinx axi dma driver 驱动构建 (二)
  3. 一台计算机有64,在同一台计算机上使用带有32位和64位Altium设计软件的数据库元件库...
  4. c++ builder 读取指定单个名称节点的值
  5. 防范SQL注入的几种方法 4
  6. 嵌入式linux应用程序实例,嵌入式Linux应用程序访问物理地址的实例
  7. BeanFactory 简介以及它 和FactoryBean的区别
  8. 合并K个有序数组(链表)【字节跳动面试算法题】
  9. mysql dump 锁表_运行MySQLDump而不锁定表
  10. web安全day16:人人都要懂的OSI和TCP/IP协议簇
  11. 用C语言写烟花,给心中的那个人看!
  12. 20190301 小中大
  13. 实现高效的英文单词前缀匹配
  14. 8421BCD码与十进制的转换
  15. 曾经改变了千万人的人生经典语录
  16. SVG 矩形rect 学习
  17. 贵有恒,何必三更起五更睡;最无益,只怕一日曝十日寒。
  18. USB 3.0规范中译本 第2章 术语及缩略语
  19. 《Windows 8 权威指南》——2.2 Windows 8 Metro界面
  20. 2023计算机毕业设计SSM最新选题之java公交电子站牌管理系统软件9430l

热门文章

  1. 工业相机选型_工业相机与镜头的选型方法
  2. php裁剪图片白边,php生成缩略图填充白边(等比缩略图方案)_PHP
  3. 力扣883.三维体投影面积
  4. Spark的相关概念说明和检查点机制
  5. icomoon.io生成字体图标
  6. jQuery入门:认识jQuery
  7. <button>与<input type =“ button” />。使用哪个?
  8. Python的list方法append和extend有什么区别?
  9. (转)SpringMVC学习(九)——SpringMVC中实现文件上传
  10. ApacheCN Linux 译文集(二) 20211206 更新