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

在Springside中使用ibatis

阅读更多
 

Springside 中在orm这一层提供了ibatis的实现,可惜在例子中没有demo具体的用法。所以在这里简单demo一下在springside中使用ibatis的方法,运行效果如下:

 

(可能有人注意到这个列表不是使用ss中默认集成的extremetable,呵呵,没错,我用的是fins提供的ecside控件,关于在ss中使用ecside另外文章介绍)

<o:p> </o:p>

1.  创建新项目
关于从ss中创建一个项目,请参看sswiki wiki.springside.org.cn,记得选择控件的时候选择orm/ibatis

2.  POJO
一个简单的叫做Userpojo,只包含一个id和一个username

java 代码
  1. public class User {   
  2.   
  3.     private Integer id;   
  4.     private String username;   
  5.   
  6.         public Integer getId() {   
  7.         return id;   
  8.     }   
  9.   
  10.     public void setId(Integer id) {   
  11.         this.id = id;   
  12.     }   
  13.   
  14.     public String getUsername() {   
  15.         return username;   
  16.     }   
  17.   
  18.     public void setUsername(String username) {   
  19.         this.username = username;   
  20.     }   
  21. }

 

3Service

       一个继承自IBatisEntityDaoManager,已经具有了listsave…等方法:

java 代码
  1. public class UserManager extends IBatisEntityDao<user></user> {   
  2. }   

 

4Web

       同样是一个继承自的Action类,也没什么好说的:

java 代码
  1. public class UserAction extends StrutsEntityAction {   
  2.     private UserManager userManager;   
  3.   
  4.     public void setUserManager(UserManager userManager) {   
  5.         this.userManager = userManager;   
  6.     }   
  7. }   

 

5.配置啊配置

       重头戏来了,下面介绍ibatis需要的配置文件,以及这几个文件之间的关系。

(1)       applicationContext-ibatis.xml

类似ss中演示hibernate时的配置文件dataAccessContext-hibernate.xml,配置数据源、sqlMapClient以及transactionManager<o:p></o:p>

注意在sqlMapClient的配置中configLocation属性指明了SQL Map XML配置文件的位置信息,“SQL Map使用XML配置文件统一配置不同的属性,包括DataSource的详细配置信息,SQL Map和其他可选属性,如线程管理等。”(摘自《iBATIS SQL Maps开发指南》)。不过在本文中只配置了映射文件。

 

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. >  
  3. <beans default-autowire="byName" default-lazy-init="true">  
  4.     <!---->  
  5.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  6.         <property name="driverClassName" value="${jdbc.driverClassName}"/>  
  7.         <property name="url" value="${jdbc.url}"/>  
  8.         <property name="username" value="${jdbc.username}"/>  
  9.         <property name="password" value="${jdbc.password}"/>  
  10.     bean>  
  11.        
  12.     <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  13.         <property name="configLocation" value="/WEB-INF/sql-map.xml" />  
  14.         <property name="dataSource" ref="dataSource"/>     
  15.     bean>  
  16.        
  17.     <bean id="transactionManager"  
  18.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  19.         <property name="dataSource"><ref local="dataSource"/>property>  
  20.     bean>  
  21.        
  22. beans>  

 

(2)       sql-map.xml

正如在(1)中所说,本文件中只是说明了映射文件的位置,关于更多配置选项,请参考《iBATIS SQL Maps开发指南》。其中resource="ibatis/user.xml"中中的路径信息是相对classpath的。

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8" ?>  
  2. >  
  3. <sqlMapConfig>  
  4.     <sql-map resource="ibatis/user.xml" />  
  5. sqlMapConfig>  

 

(3)       user.xml

终于到了最后一个配置文件了,这个文件就相当于hibernate的映射文件了,如下所示:

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8" ?>  
  2. >  
  3.   
  4. <sqlMap namespace="user">  
  5. <resultMap id="result" class="com.gpcgd.model.User">  
  6.     <result property="id" column="id" columnIndex="1"/>  
  7.     <result property="username" column="username" columnIndex="2"/>  
  8. resultMap>  
  9.   
  10. <select id="com.gpcgd.model.User.select" resultMap="result">  
  11.     select t.id,t.username, from t_user t   
  12. select>  
  13. sqlMap>  

resultMap指明了数据库和对象之间的映射关系,至于下面这段,需要解释一下

<o:p></o:p>

xml 代码
  1. <select id="com.gpcgd.model.User.select" resultMap="result">  
  2.     select t.id,t.username, from t_user t   
  3. select>  

首先是这个id,对应了dao接口中的调用参数,而返回值resultMap的值(resultMap="result")又对应了对象-数据库映射的resultMapidresultMap id="result")。

关于这个id="com.gpcgd.model.User.select",有必要说明一下。

我们知道,ssAction类的list方法是调用Manager类的getAll()方法的。

/ss2/core/src/java/org/springside/core/dao/IBatisGenericDao.java的源码中我们可以看到:

java 代码
  1. /**  
  2.      * 获取全部对象  
  3.      */  
  4.     public <t></t> List<t></t> getAll(Class<t></t> entityClass) {   
  5.         return getSqlMapClientTemplate().queryForList(entityClass.getName() + POSTFIX_SELECT, null);   
  6.     }   

 

其中entityClass.getName()=com.gpcgd.model.User”,而POSTFIX_SELECT=.select”。所以selectid要设置为:“com.gpcgd.model.User.select”。<o:p></o:p>

不知道能不能对“com.gpcgd.model.User.select”这种写法进行简化,如果哪位知道,请留言指正,谢谢!<o:p></o:p>

 

 
分享到:
评论
3 楼 leondu 2007-04-02  
大致看了一下,还没机会实践,谢谢提醒 
2 楼 suwu 2007-04-02  
有空看看兄弟的针对springside2写的jwgen-ibatis代码生成器,专门用于生成采用ibatis作为数据访问层的项目代码。:)

http://forum.springside.org.cn/viewthread.php?tid=2052&extra=page%3D1
1 楼 perrychen 2007-04-02  
在Springside中使用ibatis
改用fins提供的ecside控件
其jsp的寫法為何??

perrych@gmail.com

相关推荐

    springside3.3.4 使用方法

    在本文档中,我们将详细介绍如何使用Springside 3.3.4版本,并特别关注SSH(Spring + Struts + Hibernate)整合的方法。 #### 二、环境配置与准备 1. **安装Java JDK**: - 首先确保已经安装了Java环境,并且设置...

    SpringSide4 参考手册

    在介绍了常规模块之后,文档还专门提供了一节关于加密技术的章节,包括消息摘要和加密方法,以及如何在SpringSide中使用Crypto组件。 SpringSide还包含了一个定时任务的调度器,支持在Spring应用中进行定时任务的...

    springSide使用手册

    在 SpringSide3.0 中,项目模板存放在 `archetypes` 目录下。新生成的项目包含了基础的项目骨架,包括配置文件和示例代码,以便开发者能够快速启动开发工作。这使得项目在创建之初就具备了运行能力,减少了初期配置...

    SpringSide 2.0中文使用说明

    在SpringSide 2.0中,我们可以找到以下几个核心知识点: 1. **Spring框架**:Spring是Java企业级应用开发的核心框架,它提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。SpringSide 2.0紧密集成...

    SpringSide3.3.4安装部署

    在 SpringSide3.3.4 中,我们可以使用 Spring Framework 的功能来开发 Web 应用程序。我们可以使用 Spring MVC 框架来开发控制器、视图和模型。我们还可以使用 Spring Security 来实现身份验证和授权。 SpringSide...

    springside-3.2.2源码

    SpringSide 3.2.2 版本是一个成熟的版本,它在之前的版本基础上进行了优化和完善,为开发者提供了更稳定、更高效的支持。通过分析其源码,我们可以深入理解 SpringSide 的设计理念和实现方式,进一步提升我们的 Java...

    Springside-core-4.1.0/Springside-core-4.1.0

    本文将深入探讨SpringSide-core-4.1.0的核心特性,以及其在实际项目中的应用。 一、SpringSide概述 SpringSide是一款为Java开发者设计的开源工具集,它提供了大量的最佳实践和示例代码,帮助开发者快速上手Spring...

    springside开发全面讲解

    在学习springside的过程中,首先需要理解Spring框架的基本原理,包括依赖注入、AOP、事务管理等核心概念。然后,深入学习springside各模块的功能及使用方法,如如何配置和启动项目,如何进行模块间的通信等。最后,...

    springside3.0.zip

    本篇文章将深入探讨SpringSide 3.0中的关键知识点,帮助开发者更好地理解和使用这一强大的工具。 1. **Spring框架基础**:Spring是Java领域最著名的轻量级框架之一,它的核心特性包括依赖注入(DI)和面向切面编程...

    springside

    在深入理解SpringSide之前,我们首先需要了解Spring Framework,这是一个广泛使用的Java企业级应用开发框架,它为开发者提供了诸如依赖注入、面向切面编程、数据访问、事务管理等核心功能。 SpringSide项目的核心...

    有springside4.2.3-GA.jar 包

    本文将围绕springside4.2.3-GA.jar这个核心组件,探讨其在Java应用中的重要作用以及如何利用它提升开发效率。 首先,我们需要理解什么是.jar文件。.jar(Java Archive)是Java平台上的归档文件格式,用于集合多个类...

    springside框架

    在SpringSide框架中,Spring主要负责管理对象的生命周期和依赖关系,使得代码更加模块化和易于测试。同时,Spring还提供了丰富的数据访问抽象,包括JDBC、ORM和OXM,简化了数据库操作。 二、Hibernate的数据持久化...

    springside4(showcase)

    在SpringSide 4的showcase中,我们可以期待看到如何有效地利用Spring MVC来构建高效、灵活的Web服务。 首先,Spring MVC的核心组件包括DispatcherServlet、Controller、Model、View和ViewResolver。...

    springside示例quickstart的eclipse工程

    在本文中,我们将深入探讨SpringSide示例Quickstart的Eclipse工程,了解其结构和主要组件,以便更好地利用这个项目进行学习和开发。 首先,"quickstart"是SpringSide项目提供的快速启动模板,它是专门为初学者和有...

    springside-4.0.0.GA.zip

    5. **单元测试**:SpringSide强调TDD(测试驱动开发),因此在项目中会有详尽的单元测试,这不仅有助于保证代码质量,也提供了学习如何编写测试用例的机会。 6. **最佳实践**:SpringSide遵循Pragmatic编程原则,...

    springside4-4.2.3.GA

    在SpringSide 4.2.3.GA中,我们可以看到它对Spring Boot的深度整合。Spring Boot是Spring生态系统的另一核心组件,它简化了配置和启动过程,使得开发者可以快速创建独立运行的、生产级别的Java应用。SpringSide ...

    springside3文档资料收录

    在SpringSide3中,你会了解到如何通过XML配置或注解方式实现依赖注入,以及如何使用ApplicationContext管理bean。 三、面向切面编程 AOP允许开发者将关注点分离,如日志、事务等,从而提高代码的可读性和可维护性。...

    springside.jar

    《springside.jar在Java应用中的使用详解》 在Java开发领域,springside.jar是一个备受推崇的开源项目,它为开发者提供了丰富的工具和最佳实践,以简化Spring框架的使用。本文将深入探讨springside.jar的核心功能,...

    springside3.3完整版

    本版本,即“springside3.3”,是专为MyEclipse集成环境设计的,包含了完整的功能代码,方便开发者在MyEclipse中进行开发和调试。同时,它还附带了数据.sql文件,意味着我们可以直接导入数据库,快速搭建项目环境。 ...

    springside-案例

    在实际操作中,将SpringSide案例项目导入MyEclipse的步骤通常包括以下几点: 1. **创建新项目**:首先在MyEclipse中创建一个新的Java或Java EE项目,选择合适的项目类型,例如Web工程。 2. **解压项目**:将下载的...

Global site tag (gtag.js) - Google Analytics