数据库中仅存身份证号通过JavaBean获取生日和年龄

最近在做人事管理系统,优化数据库后,想在数据库中只存有身份证号就可以自动显示出生日期和年龄。

JavaBean代码:


private int person;
    private String IDNumber;
    private Date birthday;//通过身份证号码获取出生日期
    private int age;//通过出生日期获取年龄

    public String getIDNumber() {
        return IDNumber;
    }
    public void setIDNumber(String iDNumber) {
        IDNumber = iDNumber;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {        
        try {
            /*SimpleDateFormat()方法    降字符串类型转换为Date类型*/
            /*parse()方法   提取租字符串8-14为出生日期 返回值类型为String*/
            this.birthday = new SimpleDateFormat("yyMMdd").parse(this.IDNumber.substring(8, 14));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        Date nowTime = new Date(System.currentTimeMillis());//获取系统当前时间
        this.age = nowTime.getYear() - this.birthday.getYear();
    }

在做数据查询时只能查询IDNumber,如果查询其他的用getInt(“age”)和getDate(“birthady”)方法数据库系统就会抛出异常

数据库系统就抛出异常

因为数据库字段就没没有出生日期和年龄这两列,所以Result中就不能用get方法获取。

正确做应该是:

public ElderMessage selPseson() {
        // TODO Auto-generated method stub
        ElderMessage em = null;
        String sql = "select * from person;
        conn = this.getConnection();
        try {
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()){
                em = new ElderMessage();
                em.setIDNumber(rs.getString("IDNumber"));// 用get方法获取Result中的信息
                em.setBirthday(em.getBirthday());//调用JavaBean中的setBirthday()方法初始化出生日期,调用get方法作为getBirthday()方法的引用参数
                em.setAge(em.getAge());
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return em;
    }

JavaBean不需要和数据库中的字段完全相同,一定情况通过重写set()方法可以让程序富有更大的变化。身份证号不仅仅可以计算出出生日期和年龄,还可以有更多的计算方法,当我用到比较健壮和完善的系统时,可以用这样的方法进行重写,不仅减小了数据库的负担,而且提高了数据灵活性。但计算量增加会影响程序的运速度,在同一体统中考虑JavaBean的应用范围,尽量减少计算次数,提高应用效率:或是在数据库库管理软件中创建视图,在这没有行那方面深入探讨,各路大神是否有更加的解决方案,希望多多留言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值