前后端交互,数据库设计,null 值问题

本文专门怼那些使用默认值的儍痹。

JavaScript 里为啥有 null,
Java 里为啥有 null,
Golang 里为啥有 nil,
是因为大佬们考虑不到用默认值代替吗?

我现在在科研教室里,做实验需要积累每次反应的温度,如果没有点击,表示还没观察到最后的反应温度,请问我传的温度是使用 null 还是 0℃
竟然有儍痹,给温度设置默认值,-1000。好好好,我们都不知道最低温度是 -273℃。万一,假设,科学进步了呢。发现最低温度不是 -273 了呢。

我现在在地理科研室,出去跑地理环境,海平面定义 0米,海平面以下是负值,请问我传 null 表示这个地方我还没有设置过海拔,还是传 -1000, 表示马里纳海沟呢?
竟然有儍痹,又给海拔设置默认值,-20000。好好好,万一哪天潜水技术先进发现更深的呢?

我现在在财务办公室,设置今年的 GDP 增长率或者利润率,可能是正的表示增长,可能是负值亏损,请问我是 0 表示不增不亏,还是用 null 表示还没统计出结果,还是使用 0.8,或者 80,或者 1000 表示翻了10倍呢?

一个简简单单的 数值类型,整出那么多默认值,就是不用 null。

更别说时间类型,我现在在做人物志,1970年1月1日出生的人,是属于没设置生日,还是生日使用 19700101,
竟然有儍痹,又整出个 0000-00-00,请问我如何设置耶稣的时间,公元元年在中国是西汉,那么西汉之前的年份如何表示呢?

更别说还有关,无法给默认值的对象。
比如 Geometry,可以表示,点,线,面,多点,多线,多面。我给哪个默认值呢?

null 就是 null,
希望使用默认值的儍痹在给别人接口文档的时候,多写两行备注,
这个 -1000 表示没有设置温度
这个 -20000 表示没有设置海拔
这个 -10000 表示没有亏损,用了这种儍痹可能可能不亏损 100 倍倒闭呢。
找了那么多奇技淫巧,明明可以使用一个简单的 null 解决。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现登录注册前后端交互,可以按照以下步骤进行: 1. 创建一个SpringBoot项目,可以使用Spring Initializr来快速创建。 2. 添加MyBatis依赖,可以在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 3. 创建数据库表,用于存储用户信息,例如用户ID、用户名、密码等。 4. 创建实体类,用于映射数据库表的字段。 5. 创建Mapper接口,用于定义SQL语句,可以使用注解方式或XML方式。 6. 创建Service层,用于调用Mapper接口,并对返回结果进行处理。 7. 创建Controller层,用于处理前后端交互,接收前端请求参数,并调用Service层进行处理,并返回相应结果给前端。 下面是一个简单的登录注册示例(以注解方式使用MyBatis): User.java ``` public class User { private int id; private String username; private String password; // ... // getters and setters } ``` UserMapper.java ``` @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE username = #{username} AND password = #{password}") User selectUserByUsernameAndPassword(@Param("username") String username, @Param("password") String password); @Insert("INSERT INTO user (username, password) VALUES (#{username}, #{password})") int insertUser(User user); } ``` UserService.java ``` @Service public class UserService { @Autowired private UserMapper userMapper; public User login(String username, String password) { return userMapper.selectUserByUsernameAndPassword(username, password); } public int register(User user) { return userMapper.insertUser(user); } } ``` UserController.java ``` @RestController public class UserController { @Autowired private UserService userService; @PostMapping("/login") public Result login(@RequestParam("username") String username, @RequestParam("password") String password) { User user = userService.login(username, password); if (user != null) { return Result.success("登录成功", user); } else { return Result.fail("用户名或密码错误"); } } @PostMapping("/register") public Result register(@RequestBody User user) { int result = userService.register(user); if (result > 0) { return Result.success("注册成功", user); } else { return Result.fail("注册失败"); } } } ``` 在上述示例中,我们定义了一个UserController类,用于处理前后端交互。其中,@RestController注解用于标记该类为RESTful服务,@PostMapping注解用于标记该方法接收POST请求,@RequestParam注解用于接收请求参数,@RequestBody注解用于接收请求体中的参数。 最后,我们需要定义一个Result类,用于封装返回结果: ``` public class Result { private int code; private String message; private Object data; // ... // getters and setters } ``` 通过封装Result类,我们可以统一返回结果的格式和内容,方便前端进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值