阅读更多

16顶
46踩

企业架构

原创新闻 SimpleJDBC 1.0发布

2011-03-09 09:36 by 见习记者 asklxf 评论(72) 有23575人浏览
DAO

SimpleJDBC是一个用于简化JDBC代码的简单框架,需Spring集成。SimpleJDBC让你用简单的SQL语句完成增删改查,同时支持强类型和Java泛型,仅需注入一个Db实例。例如:

 

 

// query:
List<User> users = db.query("select * from User");
User user = db.getById(User.class, 12345);
int count = db.queryForInt("select count(id) from User where age>?", 20);

// insert
User user = new User(12345, "Michael");
db.insert(user);

// update
user.setName("Bob");
user.setAge(29);
db.updateProperties(user, "name", "age");

// delete
User user = new User(12345);
db.delete(user);
 

 

 

设计思想

  1. 契约优于配置,表名和类名一致,字段名和属性名一致;
  2. 不需编写DAO,为一两行SQL编写一个DAO方法不值;
  3. 简单的SQL语句,而不是经过ORM改造的HQL;
  4. 没有Attach/Detach状态,均为原始Bean无CGLIB代理;
  5. 没有一级/二级Cache,Cache应当用memcached,用不上memcached则说明压力小到根本无需Cache;
  6. 外键也映射到简单字段,而非对象,不支持一对多或多对一的级联查询,永远不用担心查出额外对象;
  7. 泛型和强类型支持,有SQL语句,但无JDBC代码;
  8. 不支持join等复杂查询,必须增加表的冗余以便使用简单查询。

哪些项目无法使用SimpleJdbc

  1. 没有用MySQL做为数据库;
  2. 没有用Spring;
  3. 使用了EAR而不是WAR;
  4. 必须使用Join等复杂查询;
  5. 在遗留数据库上开发。

以上说明该项目不Simple,因此无法使用SimpleJdbc。

 

 

Maven用户可直接添加依赖:

 

<dependency>
    <groupId>org.expressme</groupId>
    <artifactId>SimpleJdbc</artifactId>
    <version>1.0</version>
    <type>jar</type>
    <scope>compile</scope>
</dependency>
 

其他用户可从http://code.google.com/p/simplejdbc/下载Jar及源码。

16
46
评论 共 72 条 请登录后发表评论
72 楼 weidewei 2011-03-25 14:25
    
71 楼 transist 2011-03-16 11:49
支持共享精神
70 楼 tterry 2011-03-15 14:52
用了  的确可以从h3中解放
    不过,不支持复杂查询,这个很不厚道,希望作者斟酌。
        最后喷子er们请关上你们高贵的喷子   
69 楼 suyulin6688 2011-03-14 18:45
这么多人“鄙视”这个 SimpleJdbc ...

我昨晚仔细看了 SimpleJdbc 的代码,发现写得很轻巧,不错。

1. SimpleJdbc 的 分页查询,用到 limit,所以目前只支持 mysql,
2. SimpleJdbc 的 查询,目前只支持单表查询,不支持Join等复杂查询。

基于以上 2 点,SimpleJdbc 的 查询,确实比较“鸡肋”。
---------------------------------------------------
但是,用 SimpleJdbc 来做 insert, update, delete 还是不错的(没有只支持mysql的限制),
可以省略对应的 sql 语句,例如:

1. insert into t_table(id, name, age) values(?,?,?)
2. update t_table set name=? where id=?
3. delete from t_table where id=?

---------------------------------------------------
特别是 更新部分属性,很方便:
// update 部分属性
user.setName("Bob");  
user.setAge(29);  
db.updateProperties(user, "name", "age");  

---------------------------------------------------
SimpleJdbc 的  java实体命名(类名, 属性名)  和   DB命名(表名, 字段名) 的  “默认匹配规则”  是 用 忽略大小写的相等 来匹配,
当然,也可以通过 以下 2 个注解来覆盖“默认匹配规则”:

@Table(name="tbl_tom_cat")
@Column(name="cat_name2")

---------------------------------------------------
我昨晚修改了几处 SimpleJdbc 的代码,
让它支持 “下划线间隔的匹配规则”,例如:cityName 匹配 city_name
并且可以配置是否启用“下划线间隔的匹配规则”来作为“默认匹配规则”

  <!-- the only singleton instance of Db, that's all -->
  <bean id="db" class="org.expressme.simplejdbc.Db">
        <!-- which package your entity classes located -->
        <property name="packageName" value="com.suyulin.jdbc.entity" />
        <!-- whether use underscore match rule between JAVA and DB, example: cityName - city_name -->
        <property name="underscoreFlag" value="true" />
        <!-- inject the jdbcTemplate bean -->
        <property name="jdbcTemplate" ref="jdbcTemplate" />
  </bean>


个人觉得“下划线间隔的匹配规则”比较“大众化”一些,
例如下面2个类都使用了“下划线间隔的匹配规则”:

1. Spring 中 BeanPropertyRowMapper 类
2. Hibernate 中 ImprovedNamingStrategy 类
---------------------------------------------------

至于查询,我只用到 SimpleJdbc 的 getById:
User user = db.getById(User.class, 12345);


个人觉得 Spring 的 JdbcTemplate 查询 , 已经很方便了,

因为:
Spring JdbcTemplate 2.5+ 提供了BeanPropertyRowMapper ,不需要自己写RowMapper,
(另外,spring JdbcTemplate 3.0 开始支持泛型)
68 楼 yin_bp 2011-03-11 22:59
javaeye从来没有什么新闻的热度有这么高啊
67 楼 yin_bp 2011-03-11 22:58
杯具了,这篇新闻成了大家茶饭之余的笑谈了,权当娱乐。
66 楼 moss 2011-03-11 22:43
想法非常不错,俺目前正在构思做一个简单的simplejdbc来适应复杂的数据库操作业务需求
65 楼 80245089 2011-03-11 16:52
现在业务这么复杂,不是简单的增删改一张表这么简单呵
64 楼 fight_bird 2011-03-11 16:04
这种东西还是属于玩具级的,忠言逆耳!
63 楼 netfishx 2011-03-11 10:52
只想说一句:je的头条是不是太无聊了
62 楼 veenter 2011-03-11 10:21
根据这几点

没有用MySQL做为数据库;
没有用Spring;
使用了EAR而不是WAR;
必须使用Join等复杂查询;
在遗留数据库上开发。


说明这是一个玩具
61 楼 key232323 2011-03-10 21:39
groovy的Sql

加上一些groovy本身的动态性,

在db层,不管是OO式的(没那么强大,尤其是多表),还是sql式的(默认用Map返回记录),都是很方便的

可以说在应用层面上,groovy的db层在开发效率、灵活上首屈一指(比起基于java的一些框架)——唯一要做的,就是写一个java-groovy的桥接
60 楼 xzj127 2011-03-10 20:00

        还能在哪些项目上面用?能告诉我吗?
59 楼 onlyonce 2011-03-10 14:05
哪些项目无法使用SimpleJdbc

   1. 没有用MySQL做为数据库;

以上说明该项目不Simple,因此无法使用SimpleJdbc。


我觉得真的有病!!!

虽然说 MySQL 是很多人在用,但我用别的就不 Simple 啦,用 Access 的话,是 Simple 还是算不 Simple 啊? 这都上头条,哎……
58 楼 mccxj 2011-03-10 13:19
反编译看了一下~
内部使用spring的RowMapper和jdbctemplate
只能单表,因为用一个正则表达式来找到表名~~从而对应到bean上去
只能mysql是因为自带分页处理,使用了mysql的limit语法

貌似反编译回来的api和例子中的不一样呀~眼花?
57 楼 aochant 2011-03-10 12:51
十分同意,楼主不要拿web来说事,对于web来说这些限制和所谓的优点也够无厘头的

wendal 写道
我无语了,看到很多人K你,本来不想继续打击你的

哪些项目无法使用SimpleJdbc

   1. 没有用MySQL做为数据库;-->天啊,你封装了什么,要这种限制?
   2. 没有用Spring;         -->有JDBCTemplate,还用你这个干啥呢? 再封装一次?
   3. 使用了EAR而不是WAR;   -->你的代码这么特别???
   4. 必须使用Join等复杂查询;-->晕死,你只做过HelloWorld>?
   5. 在遗留数据库上开发。   -->更加无语, 我完全无法理解

设计思想

   1. 契约优于配置,表名和类名一致,字段名和属性名一致;
---> 直接可以无视你了
   2. 不需编写DAO,为一两行SQL编写一个DAO方法不值;
---> JDBCTemplate也不需要
   3. 简单的SQL语句,而不是经过ORM改造的HQL;
---> JDBCTemplate不就是这样的?
   4. 没有Attach/Detach状态,均为原始Bean无CGLIB代理;
---> 没人强迫你要cache啊
   5. 没有一级/二级Cache,Cache应当用memcached,用不上memcached则说明压力小到根本无需Cache;
---> 我见识了,直接上memcached??
   6. 外键也映射到简单字段,而非对象,不支持一对多或多对一的级联查询,永远不用担心查出额外对象;
--->  优点?缺点?!
   7. 泛型和强类型支持,有SQL语句,但无JDBC代码;
---> 这个功能,简单一个封装, 好多项目都有这样的代码啦
   8. 不支持join等复杂查询,必须增加表的冗余以便使用简单查询。
---> 你开发过商业项目??

结论:
    1. Helloworld 级别
    2. 作者没毕业? 或者这是毕业论文
    3. 封装了JDBCTemplate,但连JDBCTemplate都不如!
    4. 作者被Hibernate折磨,回归SQL的途中

56 楼 aochant 2011-03-10 12:48
代码简洁是很重要,但绝对不是比什么都重要。
它只少得能用吧!!!!

看看你那些限制,和所谓的优点  真够无厘头的。



55 楼 solomon 2011-03-10 11:33
早就有类似的轮子了,比这个完善多了。

 speedframework
54 楼 asklxf 2011-03-10 11:11
suyulin6688 写道
用 这个 SimpleJDBC 来 做 insert, update, delete 貌似不错。

如果使用JdbcTemplate,则可以使用这个BeanPropertyRowMapper作为 实体类 和数据库的映射。

String sql = "select id, insert_time, last_update_time, author, name, page, price from book";
List<Book> bookList = simpleJdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));


SimpleJdbc不想让你写new BeanPropertyRowMapper<Book>(Book.class),自动从SQL语句判断,并在内部帮你实现了:

List<Book> bookList = db.query(sql);

SimpleJdbc只有Db接口,其他什么都没有
53 楼 suyulin6688 2011-03-10 11:06
用 这个 SimpleJDBC 来 做 insert, update, delete 貌似不错。

至于用得最多的 select, 还是 Spring JdbcTemplate 3.0 比较爽:
===========================================================================

spring JdbcTemplate 2.5+ 提供了BeanPropertyRowMapper ,不需要自己写RowMapper,
(另外,spring JdbcTemplate 3.0 开始支持泛型)
使用条件:实体类 和数据库表的字段完全对应(字段名字一样, or “驼峰式”与“下划线间隔式”对应),
------ 如果不对应,用字段别名搞定,例如: select fname as first_name from customer ------
如果使用JdbcTemplate,则可以使用这个BeanPropertyRowMapper作为 实体类 和数据库的映射。

String sql = "select id, insert_time, last_update_time, author, name, page, price from book";
List<Book> bookList = simpleJdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));

补充:使用BeanPropertyRowMapper时,实体类 的属性最好不要用原始类型(例如int), 而应该用包装类(例如Integer), 以便应对数据库中可能出现的  null 值

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Borland Together 用户指南

    Together是基于Eclipse的一款不可多得的开发工具

  • 《Borland Together特点与优势》

    Borland®1Borland® Together®技术特性与优势1)支持所有主要的UML™ 图形充分利用Unified Modeling Language™ (统一建模语言 —UML)搭建正确的架构,以便满足你的业务目标。每一个软件项目都需要一个蓝图,以保持整个小组向相同的方向前进并构建正确的软件。通过集成UML 能力的方式,Together 扩展了开发框架,简化了构建软件的复杂过程。Toge

  • 学习使用Borland Together心得体会(一) (转)

    学习使用Borland Together心得体会(一) (转)[@more@]众所周知,大名鼎鼎的Borland公司最近收购了一家名为TogetherSoft的公司,之后Borland迅速的推出了名为Borland ALM So...

  • 学习使用Borland Together心得体会(二)

     一、使用Together绘制UML视图并产生代码框架!1、首先新建一个工程,如TEST.TPR2、每个工程都有一个default视图,可以使用鼠标右键单击default视图,如图所示:3、选择新建一个Package,这样在工程Explorer中你就会看见多了一个package视图。4、在新的Package中建立新的Class视图。这样在右边的Designer中就会看见一个空的视图

  • Together与Visual.Studio.NET的结合使用(转载)

    Together与Visual.Studio.NET的结合使用作者: bnPYSse(原创) 1、Borland Together Edition for Microsoft Visual Studio .NET 的安装

  • 最新版Borland Together Designer(UML建模工具)

    Together是一种建模工具 用Together只要精通uml,只需要少量的java知识就搞定业务需要,于是下来用用看,看了自代的一个例子,里面的uml只能看懂少部份,不过功能确实强大,自动生成java代码并运行。

  • 学习使用Borland Together心得体会(三)

    使用Borland Together Edition for Jbuilder         最近学习使用了Together Edition for Jbuilder,发现Together和Jbuilder结合起来开发程序的速度和品质无与伦比,以前发表的两篇文章都是介绍Together ControlCenter的,这个工具与现在要介绍的工具比较起来则更加的侧重于设计,分析。程序员使

  • 介绍Together

    介绍Together     最开始接触Together时,它是个能自动生成代码的建模工具。Borland公司收购Together之后,在建模方面增加了许多功能,同时增加了其它一些功能,如代码审计、度量等。OK,这么好的工具,我们就来了解一下吧。 一、功能特点    Together的功能大致有(摘自Together文档):    1、支持所有主要的UML图形    充分利用UML搭建正确的架构,

  • Borland Together key

    Borland Together Together Modeling Modeling and Diagrams New (Bug 23): The Enhanced Rich Text Editor for properties is no longer an early access feature, and can be enabled or disabled in the Capabilities window ( Window -> Preferences -> Capabilities -> Advanced -> Modeling -> Enhanced Rich Text Editing). This capability is enabled by default. New (Bug 2261, Trk#30135): Ant task provided for running OCL based Model audits/metrics. Please refer topic Borland Together Modeling Guide > Procedures > Together Quality Assurance > Running Model Audits and Metrics as Ant Tasks in the online help for details. New (Bug 2478, Trk#36928): Added ability to choose alternative way of storing properties of packages in package model files (default.txaPackage). This information is typically stored in the default package diagram files (default.txvpck or default.txvClassDiagram20). This alternative way enables keeping such properties synchronized across the team even when package diagrams are excluded from version controlling (with the Preferences -> Team -> Modeling resources -> Ignore default package diagrams option). The Store package properties in package diagram files option can be changed from the new modeling project wizard or in the Project Properties dialog. Because changing this option in the Project Properties dialog for existing project results in the one-time conversion of affected project files, this option should be used with caution. Note that projects switched to this alternative storage of package properties cannot be opened in earlier versions of the product. New (Bug 2490, Trk#27573): Provided the ModelValidator tool that looks for the severe model problems (broken links, duplicate uins, etc). Fixed (Bug 3155, Trk#36964): UML 2.0, Behavior: You can now use the Properties Inspector to specify multiple pre-postconditions for behaviors. New (Bug 3184): Properties inspector now saves changes automatically when application exits. Fixed (Bug 4264): UML 2.0, Sequence diagram: Lifeline head changes its shape depending on the metaclass of the represented classifier. Supported for Actor and Component metaclasses. Fixed (Bug 4488): Issue with dependencies has been fixed in 'UML to WSDL transformation Project' sample. Fixed (Bug 4496): When you copy elements with hyperlinks from a referenced project, the hyperlink destination is now changed to the corresponding element in the target project. Fixed (Bug 4520): Profiles, properties of enum type: You can now localize enum literals. New (Bug 4522): Added support for hidden compartments in UML 2.0 modeling projects. New (Bug 4615): Warning message describing paste semantics is shown during copy/paste operations. A switch is provided in Window -> Preferences -> Modeling -> Copy/Paste -> Show warning about relationship when elements copied to enable or disable the warning dialog. New (Bug 4631): Scope for Profile Constraints checking (Model -> Profile -> Run Profile Constraints) now can be specified. Available scopes are project, package, and selected resource. Fixed (Bug 4717 (2382), Trk#17851): Profiles: Initial value of stereotype attribute is now used as default value of corresponding stereotype-specific property.

  • borland together 2008 sp1 (part01)

    大名鼎鼎的UML建模工具,Borland的together 2008 sp1的安装文件(只是安装文件,不提供破解),原安装文件为533MB,由于附件体积的限制只能拆成23多份。 上传太累了,文件好多,干脆把链接给出来吧 http://downloadcenter.borland.com/12346/433/3049433/Together2008SP1WW_TR.exe?ftpRequestID=860391003&server=downloadcenter.borland.com&authparam=1254665716_2f4c17a019cf4d0b303f5086de6b19ce&ext=.exe 或者 ftp://ftpc.borland.com/12346/433/3049433/Together2008SP1WW_TR.exe

  • Borland Together Designer 2005 Crack

    Borland Together Designer 2005 Crack

  • Borland Together for Visual Studio 2005 .NET 破解

    请下载文件/Files/xiongeee/crack.rar按里面说明复盖掉原来的文件即可

  • 【收藏】c++编程常用工具集

    给c++程序员的一份礼物-常用工具集 给c++程序员的一份礼物-常用工具集 ■...开发环境  ---->Turbo c  DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:)  ---->Visual C++ 6.0/7.0  稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大

  • Together2006初探

            一直想找一款能和eclipse结合紧密的uml作图工具,基本要求就是能和代码同步,试用了rose,myecipse都不满意,rose和eclipse结合不紧密,而且用起来太麻烦了,myeclipse做出来的图实在是太丑了,而且居然不支持中文。。。汗一个。together很早也就试过了,奈何那个时候机子配置不够,只好放弃,呵呵,现在换了超强劲的机子,又开始试用它了。        第

  • Borland Together 2008 安装使用简单说明

    <br />目前网上有两个版本的Borland Together 2008 ,一个是百度知道的这个地址:ftp://ftpd.borland.com/download/together/2008/Together2008.exe。这个下载下来的是460多MB的Together 2008。可以使用网上的破解方法进行破解使用。但是注意,用这个版本建模以后,关闭工程再次打开以后,会发现只能显示工程的包图,而其他的UML图形全部不会显示。所以要下载使用Borland Together 2008,推荐使用Borlan

  • BorlandTogether使用指南

     . 在官网下载Together2008SP1WW_TR.exe,下载前会要求填份表格,随便填吧,填完就可以下载了,要填的表单项还真多. 安装Together. google下载破解包com.borland.sanctuary.client.core_6.0.0.rar,将解压后的两个jar文件覆盖C:/Borland/Together/dropins/together/eclipse/plu

Global site tag (gtag.js) - Google Analytics