大家帮忙看看这么一个open source的项目有价值么?
[url] http://code.google.com/p/ibear/ [/url]
一直有个想法:
大家数据库的项目做多了就会发现 写SQL是个很大的工作量,表连接的关系经常要去查数据字典或者ER图。如果ER图本身就是工程的一部分的话那该多好即便于维护又对写程序有很大的帮助。
无论是报表还是查询程序经常需要连接大量的表,连接关系写错和漏写经常会引起错误并且不容易发现,并且查询的条件经常是动态的。比如说页面上有个城市code,如果用户补填就不作为查询条件。
我希望能有这么个功能 更具上面的需求通过简单的配置 很容易写出简单的查询SQl并且能够得到装配好的Bean。
比如表关系的diagram可能存放如下,这样ER图就有了,程序可以容易的读取。
//--ER Diagram whole project maintain just one .
<relations>
<relation>
<key>
T1#T2
</key>
<fields>
<field>
fielda=fieldb
</field>
<fields>
</relation>
......................
</relationS>
有了这样的ER图就可以自动生成select update delete 以及 import export 还可以通过一张主表导出所有相关的数据,在实施的初期很有用。
查询可以如下
select
字段 { optional
【1】如果定义了要返回的Bean的话就 以返回的Bean的property 组成select 的字段。
【2】如果定义返回的字段就返回查询表的所有字段。
【3】 也可以自定义需要查询的字段
}
表名{ 所有需要连接的表的名字}
join {optional
default lef tjoin
ER图中的链接key
}
where{
null_ignore 如果输入值是空的就不作为查询条件
null_sensitive 如果输入值是空就拿 isnull为脚尖
}
tail{
group by 等
}
= what I will not do =
#1 connection and transaction manager Spring , dbUtils other framework can work for it .
#2 SQL execute ,left it to spring or other framework
= What I want to do: =
As simple as to maintain a ER Diagram and generate select .update ,delete import export sql .
#1 Sometimes we need join several tables to select some datas from database,and the join relations are always fixed .So we can store the relations into a xml file (ER Diagram ).
#2 With the ER Diagram we can generate select SQL automatically without write join part and have no chance to make mistakes.
#3 Write a result handler to convert result set to one bean or multi - beans.
On some conditions SQL is dynamically generated ,especially for the where conditions.ex:On the GUI screen there are a city_code as the search condition but if user input nothing then it should not appear on the where part.
ex:
// without select xml
SelectButilder sb = new SelectButilder("T1,T2");
sb.addCondtion(a.field="#x");
sb.generate(new Object[]{"aa"})
or
// with select xml
SelectButilder sb = SQLButilderFactory.create(sample) .
sb.generate(new Object[]{"aa"})
generated sql
select a.XXX as a_xxx,b.XXX as b_xxx ..... from T1 left join T2 on fielda=fieldb where a.field1="aa"
with spring jdbctemplate or other framework help result:
[T1Bean ,T2Bean]
//optional
<select>
<name>sample</name>
<table>
T1 , T2
</table>
<where>
<null_ignore>
a.field1={#x}
<null_ignore>
</where>
</select>
//--ER Diagram whole project maintain just one .
<relations>
<relation>
<key>
T1#T2
</key>
<fields>
<field>
fielda=fieldb
</field>
<fields>
</relation>
</relationS>
分享到:
相关推荐
“opensource”这一标签表明本书的核心内容与开源软件有关,涵盖了开源软件的定义、发展历程以及在现代信息技术产业中的应用等方面。该标签暗示了本书不仅适合软件开发者阅读,也适合对开源文化感兴趣的普通读者了解...
源代码是理解一个软件工作原理的最直接方式,通过阅读和分析这些代码,开发者可以深入了解QtService的设计思路和实现机制,这对于自定义服务行为或扩展服务功能是非常有价值的。 在QtService 2.6中,我们可以关注...
在IT领域,开源开发(Open Source Development)是一个充满活力与创新的重要组成部分,它不仅促进了技术的进步,还构建了一个全球性的开发者社区。从标题、描述以及部分文件内容来看,本文档旨在为初学者提供一个...
【标题】"java+Chat+Source.zip_java chat source" 提供了一个Java聊天应用程序的源代码。这个项目可能是一个简单的即时通讯应用...对于想要提升Java编程技能,尤其是客户端应用开发的人员来说,这是一个有价值的资源。
Weber在书中提出了一个关键问题:是什么驱动人们参与到开源项目中来?是在于金钱收益,还是出于纯粹的兴趣和对技术探索的热情?这一问题触及到了开源运动的本质。 1. **金钱激励**:在传统商业模式下,开发者通过...
从压缩包文件名“open-source-jobs-master”来看,这可能是一个GitHub仓库的主分支名称,通常这种格式表示这是一个开源项目,其中包含了关于这些工作机会的详细信息,如项目描述、工作职责、申请方式等。 综上所述...
《MS_DSOFramer开源项目V2.2.0.8深度解析》 MS_DSOFramer是一个专注于文档嵌入和打印的开源...对于想要深入了解文档框架技术或者需要在应用程序中集成文档处理功能的开发者而言,MS_DSOFramer是一个非常有价值的资源。
对于那些处理大量高分辨率图像的项目来说,这个库是一个非常有价值的资源。 安装“large-image-source-ometiff”库,通常可以通过Python的pip工具完成,命令如下: ```bash pip install large-image-source-ometiff...
从文件名称列表来看,只有一个文件 "android_vendor_qcom_opensource_fm-commonsys-r11x",这很可能是整个代码库的打包文件,包含了所有相关的源代码、配置文件和其他资源。解压后,开发者可以深入研究其内部结构,...
4. **源代码可用**:从提供的文件列表来看,"src"目录可能包含了openSmtp_source的源代码,这对于开发者来说非常有价值。源代码的可用性使得用户可以深入理解控件的工作原理,进行自定义修改或扩展功能。 5. **文档...
综上所述,"awesome-unity-open-source-on-github-master"这个压缩包很可能是包含了一系列上述分类的开源项目链接列表,可以帮助Unity开发者找到所需工具、资源和学习材料,进一步提升开发能力和项目质量。...
1.1可能表示这是项目的第一个主要版本后的第一个次要更新,这符合软件版本命名的常规做法。用户可以下载这个版本来试用lsed,看看它的功能和性能,并参与到改进项目中去,提出建议或提交修复。 开源软件在教育中的...
"SoeCeCoDeCleCa库"虽然名称看起来可能是随机生成的,但在实际中,库通常会有明确的名称,例如Python的"Sy-NaMeNexy"可能指的是"SymPy",这是一个符号计算库;C的"Sy-Lynyl"可能是指"SYCL",它是用于并行编程的一个...
结合描述中的“需要有汇编语言的基础才可以看下了”,我们可以推测这可能是一个使用HTML与汇编语言相结合的项目,可能是用于教学、演示或者某个特定功能的实现。 HTML(HyperText Markup Language)是网页制作的...
2. takuma104-ntlniph-1.51-33-gaeecaa1.zip和takuma104-ntlniph-1.51-33-gaeecaa1 (1).zip:看起来是同一个项目的不同版本,可能是一个网络库或者客户端,用于处理HTTP请求或者推送通知。 3. newsyc-newsyc-05fe3c4...
标题“es6ify-sourcemaps-test”暗示我们讨论的主题与ES6 JavaScript的转换和源映射(sourcemaps)有关,通常...这个项目对于学习ES6的语法转换和调试技巧非常有价值,同时也可能是es6ify工具的一个示例或者测试基准。
标题中的"A class to dynamically read data from any ODBC data source"是指一个可以动态地从任何ODBC数据源读取数据的类。ODBC(Open Database Connectivity)是微软开发的一种数据库访问接口,它允许应用程序通过...
【OpenFoto 开源照片画廊】是一个专为摄影爱好者和网站管理员设计的轻量级解决方案。这个项目基于PHP编程语言,充分利用了有效的CSS和XHTML技术,为用户提供了一个无需依赖数据库的图片展示平台。OpenFoto的开源特性...
### WiFi Module Datasheet Open Source 知识点详解 #### 一、产品概述与特性 **ESP8266WiFi模块**是一款具有超低功耗特性的UART-WiFi透传模块,它以其小巧的封装尺寸和先进的低功耗技术在移动设备及物联网(IoT)...
而OpenCV(Open Source Computer Vision Library)则是一个开源的计算机视觉库,广泛应用于图像处理和机器学习领域。 描述中提到“该项目现已合并到gstreamer-plugins-bad中”,这表明gst-opencv模块已经被官方整合...