问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎样不通过框架,将javabean映射到数据库中

发布网友 发布时间:2022-05-01 06:15

我来回答

3个回答

懂视网 时间:2022-05-01 10:37

static <T> List<T> processResultSetToList(ResultSet rs, Class<T> clazz) throws Exception { List<T> ls = new ArrayList<T>(); Field[] fields = clazz.getDeclaredFields(); while (rs.next()) { T tt = clazz.newInstance(); for (Field field : fields) { try { /** * 如果Oracle数据库中的类型是 number p.getWriteMethod().invoke(tt, new * Object[] { rs.getObject(p.getName()) }) 会报如下错误 * java.lang.IllegalArgumentException: argument type * mismatch --- 另外如果mysql数据库中的bigint 在进行setXxxx(Integer * val)时候也会抛出该异常 也会抛出该异常 */ Object value = null; try { String fieldName = getColumnName(field); switch (TypeUtils.getMappedType(field)) { case Long: value = Long.valueOf(rs.getLong(fieldName)); break; case Integer: value = Integer.valueOf(rs.getInt(fieldName)); break; case Double: value = Double.valueOf(rs.getDouble(fieldName)); break; case Byte: InputStream ins = rs.getBinaryStream(fieldName); if(ins != null){ value = IOUtils.toByteArray(ins); } break; case Date: /** * 15-12-8 * 转为util.Date */ Timestamp t = rs.getTimestamp(fieldName); if(t!=null){ value = new Date(t.getTime()); } break; default: value = rs.getObject(fieldName); break; } } catch (Exception e) {// 如果仅仅查询Class的部分字段 if (e.getMessage().matches("Column\s+‘.+?‘\s+not\s+found.")) { switch (TypeUtils.getMappedType(field)) { case Long: case Integer: value = 0; break; default: value = null; break; } } } field.setAccessible(true); if(value != null){ field.set(tt, value); } } catch (IllegalArgumentException e) { e.printStackTrace(); } } ls.add(tt); } DBUtils.close(rs, null, null); return ls; }

 

数据库对象映射为java对象,不使用框架

标签:

热心网友 时间:2022-05-01 07:45

你如何用实体框架,象HIBERNATE这样的ORM的时候,
首先考虑的肯定是BEAN实体类,也就是面向对象编程,面向对象操作数据库了.
但是考虑到关联关系的时候,情况就复杂些了.
比如一对多的情况:
拿博客系统来说吧
一篇文章BLOG,肯定有一个BLOGID,这个BLOGID肯定是唯一的
BLOG(BLOGID,USERID,TITLE,CONTENT,MSGS)(博客ID,用户ID,标题,内容,评论)
现在有人对这个BLOG进行评论
评论MSG(MSGID,USERID,BLOG,MESSAGE)(评论ID,用户ID,博客,评论内容)
这有两个实体类,BLOG和MSG是一对多双向关联关系.
也就是说,根据这个BLOG可以知道这个BLOG下面所有的评论.
而某个MSG,肯定是对某一个BLOG进行评论的.
BLOG里面保存着评论的信息MSGS,MSGS肯定是个集合.
其中MSG里面保存着BLOG的信息.
实体类大概是上面那样.
下面就要建立关联关系的映*.
一对多的关联关系的映射,主要体现在多的这一端,而多的这一端在数据库中体现就是外键.
也就是说,BLOG类中的MSGS是帖MSG来决定的,而数据库中,BLOG表肯定是没有MSG的任何字段信息.
但是MSG中肯定有BLOG实体类BLOGID.

有时候多个表也可以设计成一个BEAN.看情况设计喽.

建立楼主去研究下HIBERNATE里面的关联关系及其映射,
看实体类和数据库中表的详细情况.

热心网友 时间:2022-05-01 09:03

自己写,使用反射 。。。。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 有没有语音万用表介绍呢?价格比较适合一点的 女生插玩尿管后多久可以恢复知觉 - 信息提示 晚上撸完管就想睡觉然后第二天不能低头要不然右侧肩胛骨疼痛 下午就... 圣力胜利890s语音报数万用表多少钱? 拔双j管后恢复期要多久 - 信息提示 《风起洛阳》中,武悠决和李译忱,谁是幕后大boss? 《不良人》黑白无常是变数,他们会成为最终反派吗? 我插尿管有一月了,拔掉后多长时间能恢复到正常 如何查找删除没用的微信群 《扫黑风暴》中,最大反派是谁?幕后黑手开局就埋下伏笔,你知道是谁吗? 尿道结石拔双j管后恢复期要多久 《无主之城》中的幕后大boss究竟是谁? 庆余年大结局:谁是幕后黑手? 撸完管之后 为什么会疲惫 如果撸完后进行适当的锻炼 是否能够恢复 在扫黑风暴里面,幕后大boss到底是谁? 撸了几年管,多久能恢复 《扫黑风暴》播放量破20亿,剧情扑朔迷离,幕后的大boss是谁? (男)手淫后几天能恢复??? 请问语音万用表好用吗,主要测量家用的,不需要很专业,越简单越好? 晨洲岛语音数字万用表怎么样- 问一问 鞍山市菁钢钢结构有限公司怎么样? 螺纹钢764是什么牌子 求助啊,ubuntu 突然黑屏了 缺钾吃什么好 老人消瘦应该补充什么 求助UBUNTU7.04图形桌面下不到20秒就黑屏,显卡没信号输出的问题 ... ubuntu mok 黑屏 缺钾可以吃什么东西补钾 身体里缺钾,平时应该多食哪些蔬菜呢? 云南稠州银行有几家 各位朋友我因银行卡密码输入失误,现在无法取钱、而所在地又没有稠州银行,请问该怎么办呢? 我在温州端安办理的稠州银行卡输错了密码,被锁了,我现在在湖北,一定要到温州去解锁吗? 贴饼子的玉米面指的是玉米糁还是细玉米面,我用细玉米面做的不对啊 有短信说有移动开业务什么发短信过来说什么稠州银行是什么意思 怎样做贴饼子 铁锅炖鱼贴饼子贴饼子是死面还是发面 鸡肉卷饼的饼是死面的还是发面,大神请指教 如何用自己的登录优学派? 精密压力表制造厂家能否做到精度0.05级的压力表?