`
fantasy
  • 浏览: 517628 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

提速持久层开发-基于spring的CRUD组件(开源)

阅读更多

前提:

这个组件是基于Spring的getJdbcTemplate()来进行数据库操作。

 

组件特性:

1.子类只要继承父类SpringEntityDAO就能自动拥有添加,修改,删除,查询的方法 

2. 子类进行复杂查询的时候,不需要配置烦人的映射关系rowMapper

    这里的rowMapper是在父类中定义的,子类可以直接使用。

java 代码
  1. @SuppressWarnings("unchecked")  
  2.    public List queryNextFlows(String userId, String currentFlowState) {  
  3.        return getJdbcTemplate() .query( sql ,new Object[] { userId, currentFlowState }, rowMapper);  
  4.    } 

3.SpringEntityDAO提供一些比较常用的数据库操作方法,子类自动拥有。

   deleteAll 删除当前表的所有数据。

   queryAll 查询当前表的所有数据。

   queryBy根据属性名和属性值查询对象。

   queryBySql使用sql语句进行查询。

   具体可以参见SpringEntityDAO类。

4.兼容hibernate3.2.

   配置类似于hibernate annotation,但是不需要使用hibernate和hibernate annotation的jar包。

 

如何使用:

1.继承SpringEntityDAO,User是和数据库表对应的对象。

java 代码
  1. import org.kiral.model.User;  
  2. import org.kiral.widget.db.SpringEntityDAO;  
  3.   
  4. public class UserDAO extends SpringEntityDAO < User >  {  
  5.   
  6. }  

 


2. 使用注释配置表和对象的映射关系。

java 代码
  1. package org.kiral.model;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.kiral.widget.annotation.Column;  
  6. import org.kiral.widget.annotation.Id;  
  7. import org.kiral.widget.annotation.Table;  
  8. import org.kiral.widget.annotation.Transient;  
  9.   
  10. @Table(name = "USER_INFO")  
  11. public class User {  
  12.     private String id;  
  13.   
  14.     private String name;  
  15.   
  16.     private int old;  
  17.   
  18.     private String email;  
  19.   
  20.     private Date createDate;  
  21.   
  22.     private String memo;  
  23.   
  24.     private boolean isOnline;  
  25.   
  26.     @Transient  
  27.     public boolean isOnline() {  
  28.         return isOnline;  
  29.     }  
  30.   
  31.     public void setOnline(boolean isOnline) {  
  32.         this.isOnline = isOnline;  
  33.     }  
  34.   
  35.     @Column(name = "CREATE_DATE")  
  36.     public Date getCreateDate() {  
  37.         return createDate;  
  38.     }  
  39.   
  40.     public void setCreateDate(Date createDate) {  
  41.         this.createDate = createDate;  
  42.     }  
  43.   
  44.     public String getName() {  
  45.         return name;  
  46.     }  
  47.   
  48.     public void setName(String name) {  
  49.         this.name = name;  
  50.     }  
  51.   
  52.     public String getEmail() {  
  53.         return email;  
  54.     }  
  55.   
  56.     public void setEmail(String email) {  
  57.         this.email = email;  
  58.     }  
  59.   
  60.     @Id   
  61.     public String getId() {  
  62.         return id;  
  63.     }  
  64.   
  65.     public void setId(String id) {  
  66.         this.id = id;  
  67.     }  
  68.   
  69.     public String getMemo() {  
  70.         return memo;  
  71.     }  
  72.   
  73.     public void setMemo(String memo) {  
  74.         this.memo = memo;  
  75.     }  
  76.   
  77.     public int getOld() {  
  78.         return old;  
  79.     }  
  80.   
  81.     public void setOld(int old) {  
  82.         this.old = old;  
  83.     }  
  84.   
  85. }  

 

 

 

 


  3.执行测试

java 代码
  1. package org.kiral.dao;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.kiral.model.User;  
  6. import org.kiral.test.DaoTestCase;  
  7.   
  8. public class UserDAOTest extends DaoTestCase {  
  9.   
  10.     private UserDAO userDAO;  
  11.   
  12.     @Override  
  13.     protected void setUp() throws Exception {  
  14.         super.setUp();  
  15.         userDAO = (UserDAO) context.getBean("userDAO");  
  16.     }  
  17.   
  18.     public final void testALL() {  
  19.         // 构建用户  
  20.         User user = new User();  
  21.         final String id = "1";  
  22.         user.setId(id);  
  23.         user.setName("kiral");  
  24.         user.setEmail("main_shorttime@163.com");  
  25.         user.setCreateDate(new Date());  
  26.         user.setMemo("hello");  
  27.         user.setOld(100);  
  28.         // 添加用户  
  29.         userDAO.add(user);  
  30.         assertNotNull(userDAO.queryById(id));  
  31.   
  32.         // 更新用户  
  33.         user.setName("kiral2");  
  34.         userDAO.update(user);  
  35.         User newUser =userDAO.queryById(id);  
  36.         assertEquals("kiral2", newUser.getName());  
  37.   
  38.         // 查询用户  
  39.         assertNotNull(userDAO.queryAll());  
  40.   
  41.         // 删除用户  
  42.         userDAO.deleteById(id);  
  43.         assertNull(userDAO.queryById(id));  
  44.   
  45.     }  
  46. }  

 

  •    @Table(name="FLOW_TYPE"):配置表名,如果数据库的表名和对象名一致,则无需 配置。
  •    @Id:配置主键,每个对象都必须配置主键。@Id必须放在get方法上面。
  •    @Column(name="FLOW_TYPE_ID")  配置字段。当前的属性叫做ID,而数据库中的表的字段叫做FLOW_TYPE_ID,所以必须通过   Column配置对应关系。当前注释也必须放在get方法上面。
  •    @Transient:忽略当前属性,在get方法上面配置@Transient,表示数据库表中没有当前字段。
  •  

       一目了然!userDao直接使用CRUD方法。 


     

        附件是源代码和事例代码,直接作为project导入到eclipse下,然后执行org.kiral.dao.UserDAOTest。

        代码和注释都非常详细,大家一看就能明白。

       

    • widget.rar (3.2 MB)
    • 描述: 附件是源代码和事例代码,直接作为project导入到eclipse下,然后执行org.kiral.dao.UserDAOTest。
    • 下载次数: 1944
    分享到:
    评论
    11 楼 fantasy 2008-04-10  
    hibernate太复杂了,除非研究了很透彻,不然最好不要使用。
    我们公司就是因为这个原因放弃使用hibernate.
    10 楼 fantasy 2008-04-10  
    我们公司用的jboss
    9 楼 BadLuck 2007-12-19  
    penghao122 写道
    呵呵..不错啊..

    不过现在的应用程序都是基于jdk1.4的多

    最好能做到ror

    def  person < ActiveRecord
    scoflod:person
    end



    现在的grails可以这么搞了
    8 楼 liuchan7448 2007-12-18  
    不错,不错,讲的很清楚,看了以后很张知识
    7 楼 lovefly_zero 2007-12-18  
    spring太老点吧
    6 楼 lovefly_zero 2007-12-18  
    我们公司正准备改用1.5,很受用,我下载来看看
    5 楼 wangyugod 2007-12-17  
    向1.5转型
    4 楼 penghao122 2007-10-15  
    呵呵..不错啊..

    不过现在的应用程序都是基于jdk1.4的多

    最好能做到ror

    def  person < ActiveRecord
    scoflod:person
    end
    3 楼 fireflyjava 2007-10-15  
    不错的做法,但是目前的websphere server6.0或以下的都不支持1.5的特征吧!

    不知道你们公司是用什么服务器?
    2 楼 fantasy 2007-07-02  
    这个组件的思想来源于springside的HibernateEntityDao,也是对DAO层CRUD的封装,不同的是,springside是使用hibernate操作数据库,而我这个组件是使用spring的getJdbcTemplate()来操作数据库,但annotation是自己定义的,不需要依赖其他的jar包,更加轻量级。
    1 楼 fantasy 2007-07-02  
    目前这个组件已经经过真实项目的测试,在我们组开始做为公共组件使用,
    实例中演示了很多小的技术,如:
    使用hsqldb数据库,进行单元测试。
    使用ANNOTATION进行信息配置。
    使用反射调用方法,获得泛型。

    相关推荐

      Laravel开发-laravel-admin-generate-crud

      在Laravel框架中,开发人员经常需要创建CRUD(创建、读取、更新、删除)操作,这是Web应用中最常见的功能。Laravel-admin是一个强大的后台管理系统生成器,它极大地简化了这一过程。本文将深入探讨如何使用laravel-...

      spring-boot-web-restfulcrud代码示例

      这涵盖了从项目的初始化、Controller 的编写、服务层的设计到与数据库的交互等多个方面,是学习和实践 Spring Boot Web 开发的一个很好的起点。通过这个项目,你可以深入理解 Spring Boot 的自动化配置、RESTful API...

      spring-boot-04-web-restfulcrud

      《Spring Boot 2.4 RESTful CRUD 实战详解》 在现代Web开发中,Spring Boot以其简洁、高效的特点,已经成为主流框架之一。本教程聚焦于Spring Boot 2.4版本,针对初学者提供一个完整的RESTful CRUD(创建、读取、...

      spring-boot-web-crud.zip

      Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的初始搭建以及开发过程。它提供了预配置的依赖项和自动配置功能,使得开发者可以快速地创建生产级别的基于 Spring 的应用。在本示例 ...

      jeasyui-app-crud1

      《基于jQuery EasyUI的CRUD应用实例解析》 在当今的Web开发中,快速构建用户界面(UI)已经成为一项重要任务。jQuery EasyUI提供了一种高效的方法,它是一个基于jQuery的UI框架,可以帮助开发者轻松创建功能丰富的...

      面向配置的CRUD框架,基于d2-admin的d2-crud,简化d2-crud配置,快速开发crud功能;支持远程数据字典,国

      面向配置的CRUD框架,基于d2-admin的d2-crud,简化d2-crud配置,快速开发crud功能;支持远程数据字典,国际手机号校验,alioss、腾讯云cos、七牛云文件上传,省市区选择,权限管理,代码生成

      Ajax-Spring-MVC-CRUD-form-submit-and-ajax.zip

      Ajax-Spring-MVC-CRUD-form-submit-and-ajax.zip,spring mvc crud应用程序(springmvc、hibernate 4.x、bootstrap 3.x、jquery、mysql),ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json...

      spring-web-crud.rar

      springboot-web-crud完整的增...Springboot集成Druid方案:一个是在POM中直接配置druid-spring-boot-starter,不用写任何代码;一个是配置druid,写几行代码,可以加入;在方案一基础上加入stat、wall后进行验证登录。

      springboot-vue-crud

      "springboot-vue-crud"项目,正如其名,旨在展示如何使用Spring Boot后端与Vue.js前端构建一个完整的 CRUD(创建、读取、更新、删除)应用。这个项目涵盖了从搭建环境到实现功能的全过程,为开发者提供了宝贵的学习...

      spring-flex-balzeds-CRUD

      Spring Flex Balzeds CRUD 是一个基于 Spring 框架、Flex 前端技术和 Balzeds 数据访问库的示例项目,用于展示如何创建一个具备增删改查(CRUD)功能的富互联网应用程序(RIA)。该项目的核心在于利用 Spring 提供的...

      mvc-ssm-crud.rar

      SSM框架是由Spring、Spring MVC和MyBatis三个开源组件组成的Java Web开发框架。这个名为“mvc-ssm-crud.rar”的压缩包文件显然包含了使用SSM搭建一个基础CRUD(Create, Read, Update, Delete)操作应用的教程或示例...

      Spring4-Struts2-Hibernate4 CRUD Demo_5

      【Spring4-Struts2-Hibernate4 CRUD Demo_5】是一个综合性的开发示例,它展示了如何在Java Web应用程序中整合三大主流框架:Spring 4、Struts2和Hibernate4,进行基本的数据创建(Create)、读取(Read)、更新...

      Spring4-Struts2-Hibernate4 CRUD Demo (1)

      【Spring4-Struts2-Hibernate4 CRUD Demo (1)】是一个典型的Java Web开发示例,它演示了如何集成Spring4、Struts2和Hibernate4框架来实现CRUD(创建、读取、更新和删除)操作。这个项目是初学者学习企业级应用开发的...

      spring-boot-06-crud

      在本项目"spring-boot-06-crud"中,我们主要关注的是如何使用Spring Boot实现一个基本的CRUD(创建、读取、更新、删除)功能。Spring Boot是Java开发中的一个流行框架,它简化了配置,使得快速构建可运行的应用程序...

      Spring框架-IoC实现CRUD

      Spring框架-IoC实现CRUD

      spring-boot-restful-crud-01.zip

      Java SpringBoot 课程 restful crud 实验资源 ...GitHub中有源码 https://github.com/kevinkda/MarkdownRepository/tree/master/Develop%20Demo/Java%20Framework/Spring/SpringBoot/spring-boot-restful-crud-01

      Spring4-Struts2-Hibernate4 CRUD Demo

      【Spring4-Struts2-Hibernate4 CRUD Demo】是一个经典的Java Web开发示例,它结合了Spring Framework 4、Struts 2和Hibernate 4这三个流行的技术,用于实现CRUD(Create, Read, Update, Delete)操作。这个项目旨在...

      开源项目-azer-crud.zip

      项目中的"crud-master"可能是指项目的主分支或者源代码目录。在这个目录下,我们可能会找到以下关键组件: 1. **README.md**:通常包含项目简介、安装指南、使用示例和API文档等信息。 2. **src**或**pkg**:存放源...

      okta-spring-boot-react-crud-example:带有React和Spring Boot 2.0的简单CRUD

      git clone https://github.com/oktadeveloper/okta-spring-boot-react-crud-example.git spring-react cd spring-react 这将获得本地安装的项目的副本。 要安装其所有依赖项并启动每个应用程序,请按照以下说明进行...

      Dimensions-ssm_crud-test_ssm系统_spring_ssm管理系统_基于ssm_SSM系统.zip

      SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,它将Spring的核心容器、Spring MVC作为视图控制器以及MyBatis作为持久层框架集成在一起,为开发者提供了一种高效且灵活的开发环境。...

    Global site tag (gtag.js) - Google Analytics