2007-06-29
提速持久层开发-基于spring的CRUD组件(开源)
前提:
这个组件是基于Spring的getJdbcTemplate()来进行数据库操作。
组件特性:
1.子类只要继承父类SpringEntityDAO就能自动拥有添加,修改,删除,查询的方法。
2. 子类进行复杂查询的时候,不需要配置烦人的映射关系rowMapper。
这里的rowMapper是在父类中定义的,子类可以直接使用。
java 代码
- @SuppressWarnings("unchecked")
- public List queryNextFlows(String userId, String currentFlowState) {
- return getJdbcTemplate() .query( sql ,new Object[] { userId, currentFlowState }, rowMapper);
- }
3.SpringEntityDAO提供一些比较常用的数据库操作方法,子类自动拥有。
deleteAll 删除当前表的所有数据。
queryAll 查询当前表的所有数据。
queryBy根据属性名和属性值查询对象。
queryBySql使用sql语句进行查询。
具体可以参见SpringEntityDAO类。
4.兼容hibernate3.2.
配置类似于hibernate annotation,但是不需要使用hibernate和hibernate annotation的jar包。
如何使用:
1.继承SpringEntityDAO,User是和数据库表对应的对象。
java 代码
- import org.kiral.model.User;
- import org.kiral.widget.db.SpringEntityDAO;
- public class UserDAO extends SpringEntityDAO < User > {
- }
2. 使用注释配置表和对象的映射关系。
java 代码
- package org.kiral.model;
- import java.util.Date;
- import org.kiral.widget.annotation.Column;
- import org.kiral.widget.annotation.Id;
- import org.kiral.widget.annotation.Table;
- import org.kiral.widget.annotation.Transient;
- @Table(name = "USER_INFO")
- public class User {
- private String id;
- private String name;
- private int old;
- private String email;
- private Date createDate;
- private String memo;
- private boolean isOnline;
- @Transient
- public boolean isOnline() {
- return isOnline;
- }
- public void setOnline(boolean isOnline) {
- this.isOnline = isOnline;
- }
- @Column(name = "CREATE_DATE")
- public Date getCreateDate() {
- return createDate;
- }
- public void setCreateDate(Date createDate) {
- this.createDate = createDate;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- @Id
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getMemo() {
- return memo;
- }
- public void setMemo(String memo) {
- this.memo = memo;
- }
- public int getOld() {
- return old;
- }
- public void setOld(int old) {
- this.old = old;
- }
- }
3.执行测试
java 代码
- package org.kiral.dao;
- import java.util.Date;
- import org.kiral.model.User;
- import org.kiral.test.DaoTestCase;
- public class UserDAOTest extends DaoTestCase {
- private UserDAO userDAO;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- userDAO = (UserDAO) context.getBean("userDAO");
- }
- public final void testALL() {
- // 构建用户
- User user = new User();
- final String id = "1";
- user.setId(id);
- user.setName("kiral");
- user.setEmail("main_shorttime@163.com");
- user.setCreateDate(new Date());
- user.setMemo("hello");
- user.setOld(100);
- // 添加用户
- userDAO.add(user);
- assertNotNull(userDAO.queryById(id));
- // 更新用户
- user.setName("kiral2");
- userDAO.update(user);
- User newUser =userDAO.queryById(id);
- assertEquals("kiral2", newUser.getName());
- // 查询用户
- assertNotNull(userDAO.queryAll());
- // 删除用户
- userDAO.deleteById(id);
- assertNull(userDAO.queryById(id));
- }
- }
一目了然!userDao直接使用CRUD方法。
附件是源代码和事例代码,直接作为project导入到eclipse下,然后执行org.kiral.dao.UserDAOTest。
代码和注释都非常详细,大家一看就能明白。
评论
fantasy
2008-04-10
hibernate太复杂了,除非研究了很透彻,不然最好不要使用。
我们公司就是因为这个原因放弃使用hibernate.
我们公司就是因为这个原因放弃使用hibernate.
fantasy
2008-04-10
我们公司用的jboss
ecsun
2007-12-20
我以前写的一个框架,分别提供了两套实现,一套是基于Hibernate的,别一套是基于JDBC的,主要是用于一些大数据量的查询时,解决一部分性能问题.我觉得这样的结构挺好,当然,我们对外部提供了统一的数据格式包装,这样,前台开发人员就不用关注后台返回的到底是什么格式的数据了.同时,也可以便于对Hibernate了解不太深,或刚刚开始了解Hiebrate的同事,直接使用JDBC进行业务功能的快速开发.提供两套DAO实现,最终证明,在项目的快速推进过程中,作用还是很明显的.
BadLuck
2007-12-19
penghao122 写道
呵呵..不错啊..
不过现在的应用程序都是基于jdk1.4的多
最好能做到ror
def person < ActiveRecord
scoflod:person
end
不过现在的应用程序都是基于jdk1.4的多
最好能做到ror
def person < ActiveRecord
scoflod:person
end
现在的grails可以这么搞了
liuchan7448
2007-12-18
不错,不错,讲的很清楚,看了以后很张知识
lovefly_zero
2007-12-18
spring太老点吧
lovefly_zero
2007-12-18
我们公司正准备改用1.5,很受用,我下载来看看
wangyugod
2007-12-17
向1.5转型
penghao122
2007-10-15
呵呵..不错啊..
不过现在的应用程序都是基于jdk1.4的多
最好能做到ror
def person < ActiveRecord
scoflod:person
end
不过现在的应用程序都是基于jdk1.4的多
最好能做到ror
def person < ActiveRecord
scoflod:person
end
fireflyjava
2007-10-15
不错的做法,但是目前的websphere server6.0或以下的都不支持1.5的特征吧!
不知道你们公司是用什么服务器?
不知道你们公司是用什么服务器?
fantasy
2007-07-02
这个组件的思想来源于springside的HibernateEntityDao,也是对DAO层CRUD的封装,不同的是,springside是使用hibernate操作数据库,而我这个组件是使用spring的getJdbcTemplate()来操作数据库,但annotation是自己定义的,不需要依赖其他的jar包,更加轻量级。
fantasy
2007-07-02
目前这个组件已经经过真实项目的测试,在我们组开始做为公共组件使用,
实例中演示了很多小的技术,如:
使用hsqldb数据库,进行单元测试。
使用ANNOTATION进行信息配置。
使用反射调用方法,获得泛型。
实例中演示了很多小的技术,如:
使用hsqldb数据库,进行单元测试。
使用ANNOTATION进行信息配置。
使用反射调用方法,获得泛型。
- 浏览: 78617 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
J2EE开发注意事项
写绝对路径,在移动文件到其他文件夹的时候,不需要修改代码。
-- by fantasy -
J2EE开发注意事项
5.页面上的地址原则上写绝对路径。 是何道理呢? 相对路径先定位到根,然后定 ...
-- by nwangwei -
深入osworkflow的function
kathytingzi 写道怎么实现会签阿,谢谢啦 增加两个conditon, ...
-- by fantasy -
使用Filter控制页面的权限
恩,是面向切面。过滤器可以看成是一个切面。
-- by fantasy -
深入osworkflow的function
工作流初学者: 参考:http://hi.baidu.com/vjame/blo ...
-- by amuj2ee






评论排行榜