通过json动态的给转换后的对象添加属性

    xiaoxiao2021-03-25  42

    问题的需求如下:

    数据库中的表的属性如下user_tb

     

    前端的显示效果如下

     

    在做这个项目的时候遇到了一个问题,数据库中的user的属性没有年龄的这个字段,只有一个date的日期属性(即生日),而前端的页面显示的生日所对应的当前的年龄,是一个动态值,要根据生日和当前的时间计算出,然后传到前台页面。这就出现了几个问题,如何对应的存储计算出来的年龄,计算方法容易办,写一个计算的工具类就可以实现,传入一个出生年月的Date,根据当前的时间计算出一个年龄返回。关键是如何存储和对应的取出:

    因为user没有这个年龄的属性,循环的取出计算后没办法对应的保存,另外存储,取又是一个问题,曾想过动态的给user加一个属性,也没发现解决办法,后来在使用json的时候看到了json在转换的时候动态给json对象添加属性的方法,参照这个方法,算是解决了这个问题,在此分享出来,希望可以帮助像我这个菜鸟,O(_)O哈哈哈~

    主要代码如下:

    计算年龄的工具

    package com.util;

     

    import java.util.Date;

    import java.text.SimpleDateFormat;

     

    public class Calc {

    public static int jisuannianling(Date date2){

    //通过输入日期来获取年龄的

    Date date = new Date(System.currentTimeMillis());

    SimpleDateFormat sfYear = new SimpleDateFormat("yyyy");

    SimpleDateFormat sfMonth = new SimpleDateFormat("MM");

    SimpleDateFormat sfDat = new SimpleDateFormat("dd");

    //取出生日Date中的年月日

    String byear = sfYear.format(date2);

    String bmonth = sfMonth.format(date2);

    String bday = sfDat.format(date2);

    System.out.println("年"+byear+"月"+bmonth+"日"+bday);

    //取出当前系统的年、月、

    String year = sfYear.format(date);

    String month = sfMonth.format(date);

    String day = sfDat.format(date);

    System.out.println("年"+year+"月"+month+"日"+day);

    //年龄

     int sui=0;

    //要计算的数据

    //生日的信息

    int birthyear =Integer.parseInt(byear);

    int birthMonth = Integer.parseInt(bmonth);

    int birthday = Integer.parseInt(bday);

    //今天的时间

    int nowyear = Integer.parseInt(year);

    int nowMonth = Integer.parseInt(month);

    int nowday = Integer.parseInt(day);

    //待返回的生日

    sui = nowyear - birthyear;

    //比较年份

    if(nowyear >=birthyear){

    //如果年份大于生日年份,比较月份

    if(nowMonth>=birthMonth){

    //比较日

    if(nowday>=birthday){//如果今天日期大于生日日期

    return sui;

    }else if(nowday<birthday){//今日小于生日

    return sui-1;

    }

    }else if(nowMonth<birthMonth){

    //如果年份小于生日月份

    return sui-1;

    }

    }

     

    return sui;

     

    }

    }

     

    User类的代码

    package com.entity;

    import java.sql.Timestamp;

     

    import com.util.Calc;

    /**

     * User entity. @author MyEclipse Persistence Tools

     */

    public class User  implements java.io.Serializable {

        // Fields    

         private Integer id;

         private String name;

         private String pwd;

         private Timestamp birth;

    /*

    这个是关键的地方,在user里面加一个getAge()的方法,在方法中

    */

         public int getAge(){

         return Calc.jisuannianling(birth);

         }

        // Constructors

        /** default constructor */

        public User() {

        }

        /** full constructor */

        public User(String name, String pwd, Timestamp birth) {

            this.name = name;

            this.pwd = pwd;

            this.birth = birth;

        }

        // Property accessors

     

        public Integer getId() {

            return this.id;

        }

        public void setId(Integer id) {

            this.id = id;

        }

        public String getName() {

            return this.name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getPwd() {

            return this.pwd;

        }

        public void setPwd(String pwd) {

            this.pwd = pwd;

        }

     

        public Timestamp getBirth() {

            return this.birth;

        }

        public void setBirth(Timestamp birth) {

            this.birth = birth;

        }

    }

    User.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>

    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <!--

        Mapping file autogenerated by MyEclipse Persistence Tools

    -->

    <hibernate-mapping>

        <class name="com.entity.User" table="user_tb" catalog="test">

            <id name="id" type="java.lang.Integer">

                <column name="id" />

                <generator class="identity" />

            </id>

            <property name="name" type="java.lang.String">

                <column name="name" length="100" />

            </property>

            <property name="pwd" type="java.lang.String">

                <column name="pwd" length="100" />

            </property>

            <property name="birth" type="java.sql.Timestamp">

                <column name="birth" length="19" />

            </property>

        </class>

    </hibernate-mapping>

     

     

    转换后的json如下

     

    运行后的效果如下

    转载请注明原文地址: https://ju.6miu.com/read-38017.html

    最新回复(0)