最近发现实体类属性类型都定义成String,数据库不管什么数据类型都可以自动插入,是jdbc底层已经封装好转化了吗
springmvc框架,oracle数据库
怎么会呢。。如果类型不同 或者 精度 问题 最后插入时 还是会报错的!
精度问题?字符串歪,如果是int我插入Double,那可以理解精度问题
@xiaofang.bk: 。。。。我只是把这样的问题 列出来而已。。
确实我一开始实体类都定义String类型,没注意数据类型,然后数据库有Int ,number,varchar2,timestamp,我居然插进去了, 插入的数据都是前台输入1,2,3,4...这样的数据
@xiaofang.bk: 那你看看 你是用的什么框架 看看实体.java映射文件 对应的字段属性 是不是都是对的。如果找不出来的话 个人觉得 不管开发环境怎么对 还是要类型写正确
@^keepHungry$: 但确实我的的确确插进去了,不然我也不会发博客问,我也和你们想的一样啊
@xiaofang.bk: 可能插入的时候 oracle会转 但是 字符串 不仅仅是数字的字符串!
@^keepHungry$: 都是对的,不然插不进去啊
@xiaofang.bk: 你填字符串 abcd 也能插进去??
@^keepHungry$: 不是数字字符串是会报错的
那为什么日期类型,实体类中定义String类型,oracle数据库dateTime都是可以插入进去的,
@xiaofang.bk: 那就是咯 你在oracle里 查询的时候 如果是数字字符串 或者是数字类型的 字段 你可以 select * from t where t.id=1 或者 select * from t where t.id='1' 这两种 都是对的。但是 在某些环境里,可能转换错误。
@xiaofang.bk: 这就说明 oracle里 有自带转换成想要的类型。
@^keepHungry$:喔喔
好吧,和你们交流一下,也明白了不少,谢谢
怎么可能,你数据定义个int类型然后你实体类属性传个"abc"进去试试
你用了什么框架吗?数据库得数据类型是很严格的,传入的数据类型也必须与之吻合。
确实我一开始实体类都定义String类型,没注意数据类型,然后数据库有Int ,number,varchar2,timestamp,我居然插进去了, 插入的数据都是前台输入1,2,3,4...这样的数据
timstamp那个是日历插件选的,不是1,2,3,4....
@xiaofang.bk: 建议日历插件选完时间后在后端转成long型,存入数据库这样会比较好一些