如果是string,或者Date,不好统一.
每个前端的日期格式不一样,可能A页面传过来的是2020-10-10 12:00 GTM+8之类的.
B页面传过来的又是2020/10/10 12:00,每个人都特么不一样.
现在很多程序员都是前后端一体开发,自己写的可能你还会注意统一一下.但如果不是同一个人写,有模块之间调用,很麻烦的.你转换器到底怎么写才合适?
所以我建议用时间戳,long类型的,这个大家都没有异议,世界统一啊.
我不管你前端怎么显示,怎么定义,但你要传给我后端的时候,我只要时间戳,而我内部我怎么定义,怎么用,那是我的事,我传给你前端时,也只会给你时间戳.
这样的话,你自己开发没问题,跟其他人对接也不会有问题.
而实体类你直接定义成Date就可以.前端传值一个long类型的时间戳,是可以直接装入到Date类型的,这种spring是有默认转换器的,都不用 *** 心.
而Date也可以直接存入数据库中的Date,Time,TimeStamp等时间类型的.也不需要转换.
综上,总结下:数据库是时间格式的(Date,Time,TimeStamp),实体是Date格式的.前端传过来时间戳,Controller里面直接写实体就行.如果写的实体里一个字段,那也用long,然后自己new Date(long),总之跨了不同的范围,就统一成long时间戳.
添加注解存数据库。当创建的类和数据库里面的每一项一一映射时,但是又需要多些一些属性是不存在数据库里面的,此时可以在此属性上加一个注解@TableField(exist = false)就可以,另外这里添加一些经常用到的注解@Id 表示这个字段是主键@Column(name = “xx”) 表示把字段和数据库的名字对应,理解成起别名@Transactional 可以作用在接口、类、类方法。
通常上来说,数据库和实体类间的字段建立联系,尽量让实体的属性类型与数据字段类型一一对应,比如你使用的是oracle数据库,那么表的主键如果为NUMBER,那么实体对应主键属性java类型就定义为Long或Integer(依字段长度决定),如果数据库表字段为VARCHAR,实体类对应属性就应该是String,如果数据库字段为小数,则定义为Double,属性建议使用包装类型,不用基本类型。至于时间,数据库一般由Date,DateTime,以及timestamp表示,对应于java实体类,一般用Date封装即可,对时间进精度要求高的话,就用TimeStamp封装。当然,你说的情况是可以的,也就是说,使用java的String类型,理论上可以封装所有的数据库字段类型,你可以把任何数据库的有效字段都封装为String,因为java中的所有数据类型,都有toString()方法,可以以字符串形式展示任何数据类型,还可以通过重写对象的toString()方式达到自定义显示数据的方式,可以说很方便。但是时间类型一旦用字符串表示,你便失去了直接调用时间类型特有的一些有用的方法,比如获取时分秒,比较时间大小等等。而是需要手动再转化为时间对象再进行 *** 作,这无疑又多了一个步骤。因此,除非是比较特殊的情况,比如,单纯的进行数据导出,不做特殊处理,你可以建一个属性全为String的实体类,来封装数据库查询的数据,然后导出为excel或word文件之类的 *** 作。否则,强烈建议使用匹配的数据类型和数据库字段类型建立关联!
希望我的回答能帮到你!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)