`
shanghui_12
  • 浏览: 24844 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

世界本可多些选择(研究下轮子)

阅读更多
离开了hibernate我们能活不?三个月过去了,从当初的要死要活,到现在的自力更生,重做功能类似的工具(说框架我不好意思,题目上引用hibernate都惭愧!),我成长了~~
我怕写sql语句,我怕写数据连接关闭语句,代码拷贝??我挺懒的 碰巧给我的任务又挺多,10来张表,我的天啊!为什么就不能用hibernate?数据表字段的增减变换都得改好多地方,需求比较简单,时间也紧,我改怎么办?
天无绝人路,咱自己造轮子,就是不当搬运工!
我的轮子主要功能:sql自动生成(oracle是公司坚持用的,所以只针对它写特定的sql),自动返回vo和list类。经过一个晚上的思考(包括梦里),有了思路:
1,自动生成sql基本没啥问题,基本就是玩字符串和java反射,整理了下知识,一个上午搞定。这里利用两个字符数组来表示数据表与java类的对应。
private static String[] tables={"表名","ID","ACCOUNT","CREATTIME","IMAGE","INTRODUCE"};
private static String[] attributes={"42322","id","account","creatTime","image","introduce"};//首位标识属性的类型

2,单独执行增加,删除,修改的sql返回值都为boolen,所以利用公用的链接数据库操作类DBConnect便可。
3,返回一个实体类,阿哦,有点难,java反射还是功力不到。百度谷歌半天,我这里抽那里取,写成了俺的文章 这里做得挺无耻,不许别人用的时候颠倒前面传递的两个字符数组次序,想用俺的就听俺的。字段类型也就只有int,string,date三种,因为我发现别的xdjm没有用到其它的,没有就不写,嘿嘿。
4,在返回实体类基础上返回list。不用多少工夫了,搞定!
xdjm用上觉得不错,我也心满意足了。休息,休息~~代码如下:(只写了一个类,先写函数名吧,估计大家也能猜出怎么个写法了吧)
public static String addSql(String[] tables, String[] attributes, Object vo)
public static String delSql(String tables, Object vo)
public static String updateSql(String[] tables, String[]attributes,Object vo)
public static Object getVo(String[] attributes, String sql,Object vo)
public static List getList(String[] attributes, String sql,Object vo)			
分享到:
评论
21 楼 lpp333 2008-07-22  
看到最后发现都扯到地域性争执来了
这都哪根哪啊
LZ的劲头不错
看来错就错在扯上了hibernate
大家继续加油吧 不要每天上来都是口水 呵呵
20 楼 shanghui_12 2008-07-22  
好奇怪,这里面有一群上海的ID,是一个人换多个马甲还是找了一伙人来帮忙?果然是上海人!
19 楼 AllenZhang 2008-07-22  
怎么这种文章都存在。有讨论的必要么。
写点sql值得哇哇叫么
18 楼 shanghui_12 2008-07-22  
谢谢大家的支持,项目已经完了。一天的时间写的这个工具类,所以不能尽善尽美。但是节省了大家很多时间的,确实有了效益。想起了那句老话:懒人推动世界!
17 楼 spiritfrog 2008-07-22  
lz也更愿意用hibernate的呀, 就他做的这些工作hibernate都实现了, 可惜主管抵制没办法。那就继续努力把, 知道自己在做什么就行了。
16 楼 drinkjava 2008-07-21  
把Hibernate改成SQLUTI,易如反掌,只要不用它的二级缓存和对象关联就可以了。把你的这个工具类改成支持跨数据库、事务、锁、翻页...,难如登天,所以还是不要发明轮子的好。
当然了,如果项目很小,配Hibernate的时间里都可以用你的工具类完成的,且不考虑今后的功能扩充,那尽管用你的工具类好了。
15 楼 shanghui_12 2008-07-21  
Oracle的sql语句取插入数据库时间sysdate,to_date等函数特定写了进来。各位继续拍砖~~
14 楼 slaser 2008-07-21  
LZ, 我4年前做个这个类似的一个框架,没想到都到这个年代了,还有人摆弄这个。如果基于apache common DButil项目来实现你的东西,可能会比较好。
13 楼 hu_huter 2008-07-21  
不知所云,没看出你少什么代码,并且使用你的工具类要非常小心,

sql自动生成(oracle是公司坚持用的,所以只针对它写特定的sql),
我也不知道你从哪里知道Oracle是这样的。
oracle八百年前就造了toplink这个轮子。他自己不要不知道给谁用,你相信Oracle公司内部的系统数据库不是Oracle吗?
12 楼 dzmonkey 2008-07-21  
公司不允许用Hibernate,但是可以用spring的JdbcTemplate啊,其实和你做的工作也很类似的。
11 楼 xidaboy 2008-07-21  
题目改一下

瘦身版SQLUTIL类

这样比较合适

别和HIBERNATE扯,根本就是差的十万八千里
10 楼 shanghui_12 2008-07-21  
这个工具只限于公司的开发模式,省去手写sql,避免进行字段修改引起的代码霰弹式修改等作用。这里提供一种思路,呵呵,国际化,不是这里的范围。
9 楼 wm920 2008-07-21  


像你这样想,完全违背的hibernate的概念,hibernate里面的很多的代码于逻辑的控制,都是按照国际化的标准惯例来做的,而像你那做的化,完全违背了国际化软件思想(面向对象思想),你的观点明显是概念化。会给软件带来很多的后患。
例如,平台的升级,维护。
8 楼 LucasLee 2008-07-15  
的确还很粗糙,不过自己动手做工具的劲头不错。
7 楼 shanghui_12 2008-07-15  
Joo我不是主管人员,我个人也非常喜欢用Hibernate!但是项目经理不允许用,我也有很大的抵触,所以为了减少我的手工代码量,写这样一个工具类是一个特殊情况下的特殊工作,这个工具也确实起到了减少重复性工作的作用,只是想给大家提供一种思路,一些框架只知其然,不知其大概所以然(知其所以然估计很少人能做到)。
6 楼 Joo 2008-07-15  
不单是这些 事务管理 乐观锁 应用缓存难道你都自己手写吗
另外,Hibernate里面不也有动态生成sql吗 不知道为什么你需要自己实现一个?
5 楼 shanghui_12 2008-07-15  
Joo 说得好,没有看我自己都称为工具类吗?Hibernate如果能够实现按需抽取就爽了,我现在只需要这几个功能,难道所有的功能你都会用吗?这就是为什么我们项目代码20%,框架80%的原因了~~
4 楼 shanghui_12 2008-07-15  
仔细看了下,第二点没有实现,不好意思。你从数据表往上走,我的工具类是可以满足对该表的CRUD操作的,具体的业务实现实体,放在业务逻辑层解决吧!
3 楼 Joo 2008-07-15  
Hibernate可不仅仅是你说的这三个功能,被称为框架而不是工具是有道理的
2 楼 shanghui_12 2008-07-15  
1,只是一个工具类,代码200多行。实现功能为sql生成,与查询pojo类以及其list返回。所以项目人员可以选择用,也可以选择自己来做上面的事情。维护肯定只有本人来了。
2,这个功能已经实现。
public static Object getVo(String[] attributes, String sql,Object vo)//传递参数为pojo描述数组,查询sql(写了个vo查询自动生成sql函数),pojo对象(你需要在调用改函数前新建一个Article类传递过来)
返回查询实体类功能已经实现,有兴趣可以给源代码给你参考。
3,这个也是我最头大的问题,我不是主管人员。Spring+strutr2已经在用了ExtremeTable也在用,但是主管人员坚持不用Hibernate,我只能尽量在个人能控制的范围内来实现减少重复性工作。

相关推荐

    五年级科学下册 第1单元 3《轮子的妙用》教案 翼教版-人教版小学五年级下册自然科学教案.doc

    通过本单元的学习,学生不仅能够掌握轮轴的科学原理,还能够学会如何将这些原理应用于解决现实世界中的问题。 总之,《轮子的妙用》这一单元通过科学的视角和实验的方式,使学生在了解轮轴原理的同时,培养其解决...

    科学轮子学习教案.pptx

    教案的核心内容是研究吊车上的轮子,即滑轮系统的工作原理,以及它如何在提升重物方面发挥关键作用。 轮子的分类是教学的起点,教案将轮子分为两类:一类是与负载一起移动的轮子,如动滑轮;另一类则是固定位置,不...

    小班语言:大轮子.docx

    例如,小动物们为什么最终选择将大轮子归还给大汽车?这个过程引导孩子们认识到拾到的东西应该归还给失主,并理解轮子对于汽车的重要性。通过这种情境模拟和角色扮演,孩子们在玩耍的同时,也在无形中接受了诚实和...

    科学《有趣的轮子》教案.doc

    《有趣的轮子》这堂课程,便是通过科学教育的方式,引领大班幼儿走进轮子的世界,不仅让他们认识轮子,更要让他们理解轮子与我们生活的密切关系,以及科学原理如何在其中发挥作用。 首先,课程将带领孩子们追溯轮子...

    五年级下册科学教案 -3 轮子的妙用 冀人版.doc

    2. **观察和设计**:观察真实世界中的轮轴应用,如吊车,识别其中的不同类型轮子。同时,鼓励学生设计自己的简单机械,运用轮轴原理解决问题。 **教学重难点**: 1. **重点**:强调轮轴、滑轮和齿轮等简单机械在...

    “云南师范大学汉藏语研究院文库”总序.docx

    在这样的背景下,云南师范大学汉藏语研究院应运而生,它不仅肩负着研究和传承的使命,更是将汉藏语研究推向国际舞台的前沿阵地。 自研究院成立伊始,即2012年,它就以一系列卓有成效的工作,向世人展示其研究的决心...

    2021年大班科学公开课滚动的轮子教案反思.doc

    在当前教育理念下,科学教育已经不仅仅局限于传授知识,更多的是通过实践活动培养孩子的探索精神和科学素养。"滚动的轮子"这一主题的教案设计,正是基于这样的教育目标,通过一系列精心策划的实验和活动,引导大班...

    【批量下载】Twisted-历史各版本.zip

    总的来说,这个压缩包提供了一个方便的方式来获取Twisted的旧版本,这对于维护旧项目、进行兼容性测试或研究项目的历史发展都是极其有用的。同时,这也是一次了解Python包管理和版本控制的好机会,有助于提升你的...

    Webots搭建麦轮小车1

    在本实验“Webots搭建麦轮小车1”中,我们将学习如何使用Webots仿真软件构建一个具有麦轮的小车模型,并实现其基本的运动控制。Webots是一款强大的机器人模拟软件,允许用户创建、编辑和仿真复杂的机器人系统。 ...

    可变形轮腿式机器人行走机构设计与研究.pdf

    在当今科技迅速发展的背景下,各种可移动机器人在协助人类的工作和生活中扮演着日益重要的角色。机器人的设计通常根据其移动方式分类,大致包括轮式、腿式以及履带式等类型。然而,面对现实生活中复杂多变的路况环境...

    阅读背景知识研究.pdf

    【阅读背景知识研究】涉及了广泛的主题,涵盖了历史、科学、...这些知识点反映了人类对世界多角度的理解和探索,无论是对历史事件的研究,还是对自然科学的洞察,都是托福学习者扩大知识面、提升英语能力的重要素材。

    country-picker-android,一个简单的库,它显示所有国家的美丽列表,允许用户选择他想要的国家,并提供诸如国家代码、ISO代码名称和标志等详细信息。.zip

    在Android开发中,特别是在处理电话号码验证、地区定位或者多语言支持时,通常需要一个直观的国家选择组件。"country-picker-android"就解决了这个问题,它简化了开发者的工作,避免了手动创建和维护国家列表的繁琐...

    移动机器人的研究

    【移动机器人的研究】 移动机器人领域近年来取得了...这些研究成果对于推动机器人技术在现实世界的广泛应用具有重要意义,特别是在自动化运输、环境探索、家庭服务等领域,有望实现更加智能和精准的移动机器人系统。

    基于双目视觉的轮式机器人动态避障研究

    由于提供的文件信息中,【部分内容】部分仅包含重复且无实际内容的字符组合,无法提取出有价值的信息,因此无法从这...通过对这些关键技术的深入研究和不断完善,能够提高轮式机器人在真实世界环境中的自主性和安全性。

    美国数学建模2001年outstanding作品

    这意味着在某些特定条件下,选择正确的轮子类型对于提高比赛成绩至关重要。 #### 结论 这项研究不仅提供了一个有效的数学模型来辅助自行车手或设计师选择最佳的轮子类型,还展示了数学建模在解决实际问题中的重要...

    基于Matlab的平面连杆机构仿真软件的研究.pdf

    关键词中提到的“Matlab”,“平面连杆机构”以及“运动性能仿真”是本研究的三个核心概念。Matlab作为仿真工具,平面连杆机构是被仿真的对象,而运动性能仿真是仿真分析的主要内容。整个研究工作围绕如何利用Matlab...

    Python库 | vurf-0.1.0-py3-none-any.whl

    Python的生态系统庞大且活跃,有无数的开源库可供选择。每个库都有其特定的用途,开发者可以根据需求选择合适的库,或者如果找不到满足需求的库,也可以自己创建并发布轮子文件,为社区贡献新的工具。 总结来说,`...

    igraph 的 Python 接口.zip

    igraph 是来自世界各地的许多人合作的作品——请在此处查看贡献者列表。引用如果你在研究中使用 igraph,请引用Csardi, G., & Nepusz, T. (2006)。用于复杂网络研究的 igraph 软件包。InterJournal,复杂系统,1695...

Global site tag (gtag.js) - Google Analytics