java 操作数据库时一个属性是DateTime类型的写入数据库时可弄成Varchar么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 操作数据库时一个属性是DateTime类型的写入数据库时可弄成Varchar么相关的知识,希望对你有一定的参考价值。

这样读出再次从数据库读出后可以变为DateTime 么,还是说数据库中有专门的DateTime对应的类型

通常上来说,数据库和实体类间的字段建立联系,尽量让实体的属性类型与数据字段类型一一对应,比如你使用的是oracle数据库,那么表的主键如果为NUMBER,那么实体对应主键属性java类型就定义为Long或Integer(依字段长度决定),如果数据库表字段为VARCHAR,实体类对应属性就应该是String,如果数据库字段为小数,则定义为Double,属性建议使用包装类型,不用基本类型。至于时间,数据库一般由Date,DateTime,以及timestamp表示,对应于java实体类,一般用Date封装即可,对时间进精度要求高的话,就用TimeStamp封装。

当然,你说的情况是可以的,也就是说,使用java的String类型,理论上可以封装所有的数据库字段类型,你可以把任何数据库的有效字段都封装为String,因为java中的所有数据类型,都有toString()方法,可以以字符串形式展示任何数据类型,还可以通过重写对象的toString()方式达到自定义显示数据的方式,可以说很方便。但是时间类型一旦用字符串表示,你便失去了直接调用时间类型特有的一些有用的方法,比如获取时分秒,比较时间大小等等。而是需要手动再转化为时间对象再进行操作,这无疑又多了一个步骤。因此,除非是比较特殊的情况,比如,单纯的进行数据导出,不做特殊处理,你可以建一个属性全为String的实体类,来封装数据库查询的数据,然后导出为excel或word文件之类的操作。否则,强烈建议使用匹配的数据类型和数据库字段类型建立关联!
希望我的回答能帮到你!
参考技术A mysql中有一个类型是时间戳类型,数据库会默认给你赋值为你加入这条记录的系统当前时间的!

Java面向对象的基本思想理解

1、封装:把一些数据类型(属性)和有关数据类型的操作(方法)封装起来,形成一个不可分开的实体(类);给内部的属性私有化,提供公开的方法。当外部需要访问时,可以不用管实体内部的具体逻辑关系,通过对象调用类内部的方法就行了;

    优点:信息隐藏(安全性)、简化操作;

    例子:一个账户类,属性有:账号、密码等;方法有存钱、取钱等;因为要保护个人信息,所以将属性私有化,然后提供公开的get,set方法,这样就不用每创建一个账户就要去改账号和密码了,只需要通过这个类的实例调用get、set方法就行了。


2、继承:将一些公有的特性(属性)和行为(方法)拿出来封装在一个类(父类)中,其他类可以通过继承这个类来得到这些属性和方法,就不用每次都重新定义了;

    优点:代码复用性好、简化操作;

    例子:一个Person类,里面有姓名、年龄等属性,有说话、吃饭等方法;然后定义一个学生类时,只用继承Person类,就可以不需要再定义这些属性和方法(也可以重新定义),只要分别赋值就可以了。


3、多态:程序中定义的引用变量所指向的具体类或者通过这个引用变量发出的方法调用,在编译的时候是不确定的,只有到运行时才知道具体指向哪个类,具体调用哪个方法;

    优点:灵活、抽象、行为共享、代码共享

    例子:Person  p=new  Student()这就是多态;在编译时,p指向哪个类,p调用的方法是哪个类里的都是不确定的,在运行时才确定;

    多态里有向上造型和向下造型;向上造型是自动转化的,小类型自动转换成大类型;向下造型是强制的,不是所有时候都可以转化;如:

Father  fa=new  Father();

Child   ci=new  Child();

ci=(Child)fa;这样编译能通过,但是运行时会出现java.lang.ClassCastException (类转换异常)

    如果是:创建父类对象,实例化子类就可以进行向下造型;

    补充:多态发生的前提:

        1、重载:方法签名不同:参数类型不同、参数个数不同、参数顺序不同,方法名要相同;与返回类型、访问权限无关;

        2、重写:a、方法签名要完全相同;

                        b、访问权限子类重写的方法不能小于父类里的方法(更开放);

                        c、子类重写的方法抛出的异常应该和父类方法抛出相同或者是父类方法抛出的异常的子类;

                        d、返回类型:如果是基本类型,则要相同;如果是引用类型,子类方法应该与父类相同或者是父类的子类(要有包含关系)

        多态中经常用到一个关键词instanceof:    x instanceof A:检验x是否为类A的对象,返回值为boolean型。常用在equals方法的重写里面。


4、抽象:从一些已有的事物中抽取出我们所关心的特性(属性)和行为(方法),从而形成一个新的事物的过程。

    优点:代码复用性好,操作方便

    例子:各种各样的汽车,我们看到都知道是车,是因为我们都有一个抽象的概念,比如说:四个轮子,能跑等等,这就是抽象!

 


本文出自 “Java学习” 博客,请务必保留此出处http://12181171.blog.51cto.com/12171171/1955941

以上是关于java 操作数据库时一个属性是DateTime类型的写入数据库时可弄成Varchar么的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver数据库中为datetime类型,通过myeclipse逆向工程生成实体类中属性为啥是java.sql.Timestamp

我应该使用啥 Java DateTime 类?

python模块datetime将字符串转换为日期

使用相同的函数设置多个类属性

Java反射机制

Java内省