无存储过程实现的年龄自动更新(Java)

本文介绍了在不使用存储过程的情况下,如何实现年龄自动更新。讨论了存储过程的优缺点,提出了定时更新和查询时更新两种方案,并提供了查询时更新的代码示例,适合服务器压力较大的企业级开发场景。
摘要由CSDN通过智能技术生成

无存储过程实现的年龄自动更新

开篇

做项目的时候我有一个需求是实现年龄自动变化。在尽可能考虑性能和可移植性的情况下,我想出了以下几种方案。

存储过程

我脑子里第一个想到的解决方案是用存储过程。而又因为我用的数据库是MySQL,我恍然想起阿里巴巴Java开发手册中写的:

【强制】禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。

MySQL对存储过程的优化和支持比PostgreSQL, Oracle, MSSQL差多了。
不过在服务器压力较小的情况下,存储过程在兼顾效率和开发成本的要求下还是有可取之处的。
存储过程这个方案就被毙掉了。

定时更新

我想到的第二个方案就是服务器在每天凌晨4点的时候,用JDBC连接数据库,进行扫描后对年龄列进行更新。
这个方法虽然性能不大好,但是还是有一定的可行性的。

查询时更新

既然数据库中的内容都是通过访问接口来得知的,那为什么不在查询的时候判断并更新年龄值呢?
话不多说,给代码:

public APIResult findById(Long id) {
   
        if (id == null) {
   
        //APIResult是我自定义的返回结果类
            return APIResult.newResult(ResultCode.BadRequest, "params invalid", null);
        }
        //MybatisGenerator中提供的搜索条件AnimalExample
        AnimalExample example = new AnimalExample(
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值