`
yelifei94
  • 浏览: 30634 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

好久没弄过struts2 和spring了 基本上都忘记了。

温习下 还有第一次接触的 ibatis 3.0 以前的版本没接触过,不过网上找的资料基本上都是2.多的版本

所以我发个3.0的让发家瞧一下呵呵。

这里需要 ibaits3.0的jar包 大家可以在这里下载

spring ibatis 所需jar包http://code.google.com/p/mybatis/downloads/detail?name=mybatis-spring-1.0.1-bundle.zip

 ibatis 3.的中文PDF 全部复制进去 包括空格部分

http://code.google.com/p/mybatis/downloads/detail?name=MyBatis 3 User Guide Simplified Chinese.pdf

 

 

 

<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
		   <!-- struts2的请求是通过拦截器处理的 -->
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<listener>
		<listener-class>
		  <!-- 加载spring文件的监听器 -->
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

 

然后是 用 spring来配置bean类 以及加载 ibatis文件

 

 

 

	<!-- 配置数据库 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="url">
			<value>jdbc:oracle:thin:@10.38.146.158:1521:oracle</value>
		</property>
		<property name="username">
			<value>scott</value>
		</property>
		<property name="password">
			<value>tiger</value>
		</property>
	</bean>
	
	<!-- pojo -->
	<bean id="empAction" class="com.test.action.EmpAction">
	   <property name="empDao" ref="empDao"></property>
	</bean>
	
	
	
	<!-- 加载 abities
	 SqlSessionFactoryBean 这里是与ibatis以前版本区别的地方
	 这里不是继承 sprig的FactoryBean 因为spring的版本没有更新 由ibatis jar包自己开发类继承了
	 spring的FactoryBean类
	 另外必备属性:dataSource 
	  -->
	<bean id="sqlMapClient"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<!-- 加载ibatis配置文件的路径
		name的属性有两个:
	  	 configLaction 对应 ibatis的环境配置文件处理
		 mapper 对应的是ibatis  与数据库映射的设置。
		   -->		
	  	<property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
	  	<!--<property name="mapperLoaction" value="classpath*:com.test.map.*.xml"></property>  -->
	</bean>
	
	<!-- 把加载了 配置文件的 sqlMapClient 注入 SqlSessionTemplate模板-->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlMapClient" />
    </bean>
    
    <!-- 通过spring 把已经加载ibatis配置文件sqlMapClient bean 注入到 dao类 供
	dao类查询数据 -->
    <bean id="empDao" class="com.test.dao.impl.EmpDao">
	  <!-- 使用构造器注入 -->
	  <constructor-arg ref="sqlSession" />
	</bean>

 

 

 

 

接下来是配置 SqlMapConfig.xml

 

<configuration>

   
   <!-- 对应一些POJO类 然后可以在mapper中引用Emp 等就等于引用这个类类型-->
	<typeAliases>
		<typeAlias type="com.test.map.Emp" alias="Emp" />
		<typeAlias type="com.test.map.Salary" alias="Salary" />
		<typeAlias type="com.test.map.Dept" alias="Dept" />
	</typeAliases>

	<!--  这里本来是用 ibatis配置数据库的 因为我用spring管理了数据库连接
		所以这一部分就省略了
		resource="conf/database.properties 这个文件对应的是数据库连接
		的相关信息:
		
		oracle.database.driver=oracle.jdbc.driver.OracleDriver
		oracle.database.url=jdbc:oracle:thin:@10.38.146.158:1521:oracle
		oracle.database.user=scott
		oracle.database.password=tiger
		
		
		<properties resource="conf/database.properties" />
		下面是一些环境的配置 具体含义见我发个大家的文档把
		<environments default="development">  
		<environment id="development">  
		<transactionManager type="JDBC"/>  
		<dataSource type="POOLED">  
		<property name="driver" value="${oracle.database.driver}"/>  
		<property name="url" value="${oracle.database.url}"/>  
		<property name="username" value="${oracle.database.user}"/>  
		<property name="password" value="${oracle.database.password}"/>  
		</dataSource>  
		</environment>  
		</environments> 
	-->
	<!-- 加载相关ibatis的映射文件 -->
	<mappers>
		<mapper resource="com/test/map/emp.xml" />
		<mapper resource="com/test/map/dept.xml" />
		<mapper resource="com/test/map/procedure.xml" />
	</mappers>

</configuration>

 

然后是配置映射 emp.xml

 

<mapper namespace="empspace">


	<!--id:java要调用的时候引用包名+id即可 如empspace.login
		parameterType 传入参数类型:Emp Emp是刚才在
		<typeAlias type="com.test.map.Emp" alias="Emp" />设置的
		resutlType 返回类型 Emp
		也就是说传入一个 username和password已经赋值的Emp对象
		如果从数据库中能够查询到用户和密码想匹配的的数据 就返回该行
		数据并且封装成Emp对象。
		
		#{username} username必须是javaPOJO类中设置的一个属性
	-->
	<select id="login" parameterType="Emp" resultType="Emp">
		select * from Emp where username= #{username} and passowrd
		=#{passowrd}
	</select>


	<!-- resultMap是 ibatis中功能最强大最灵活的部分
		它可以任意的多个类型 
		id :唯一标识
		type :它对应的类型
		属性ID:数据库中的唯一标识属性 priamry key
		<result 和 id  中的  property对应的是pojo的属性 column对应的是
		数据库表中的类
		<association:关联 对应关系为一对一
		
		
		
	-->

	<resultMap id="emp_salary_result" type="Emp">
		<id property="empno" column="empno" />
		<result property="ename" column="ename" />
		<result property="username" column="username" />

		<!-- 类Emp中含有属性 salary  两个表通过salary_empno属性关联起来
			salary的类型 就是 salaryResult 语句 返回类型所对应的类型 即
			Salary
			<typeAlias type="com.test.map.Salary" alias="Salary" />
		-->
		<association property="salary" column="salary_empno"
			javaType="Salary" resultMap="salaryResult" />
	</resultMap>

	<resultMap id="salaryResult" type="Salary">
		<id property="empno" column="salary_empno" />
		<result property="salary" column="salary_salary" />
	</resultMap>




	<select id="salaryByEmpno" parameterType="String"
		resultType="Salary">
		select * from Salary where empno=#{empno}
	</select>

	<select id="select_Emp_Salary" parameterType="String"
		resultMap="emp_salary_result">
		select e.username,e.ename , e.empno , s.empno as salary_empno,
		s.salary as salary_salary from Emp e,Salary s where e.empno=
		#{empno} and e.empno = s.empno
	</select>
</mapper>

 

 

   struts的配置就比较简单了到处都有我就不多写了

<struts>
	<package name="default" extends="struts-default">
	    <!--empActionspring中配置的bean 可直接引用 -->
		<action name="empAction" class="empAction" >
		
			<result name="success">/Success.jsp</result>
		</action>
	
	
		<action name="queryEmp" class="empAction" method="queryEmp" >
		  <result name="success">/Success.jsp</result>
		  </action>
		  
		  <action name="empAction" class="empAction" method="login" >
		  <result name="success">/Success.jsp</result>
		  <result name="failed">/failed.jsp</result>
		  </action>
		
	</package>
</struts>

 

 

 

java dao类 调用 ibatis

/**
 * @(#)EmpDao.java 1.0 Jul 6, 2011
 * @Copyright:  Copyright 2000 - 2011 ISoftStone Tech. Co. Ltd. All Rights Reserved.
 * @Description: 
 * 
 * Modification History:
 * Date:        Jul 6, 2011
 * Author:      YuSheng 245
 * Version:     ODS V100R001C06
 * Description: (Initialize)
 * Reviewer:    
 * Review Date: 
 */
package com.test.dao.impl;

import org.apache.ibatis.session.SqlSession;

import com.test.dao.IEmp;
import com.test.map.Emp;

public class EmpDao implements IEmp
{
   private SqlSession sqlSession ;
   /**
    * 获取ibatisSession
    * @param sqlSession 
    */
    public EmpDao(SqlSession sqlSession ){
        this.sqlSession = sqlSession;
    }
    
    public Emp queryEmp()
    {
    
      /**
       * 调用ibatis查询语句 因为已经设置了返回类型为Emp
       * 所以强转不会报错。
       */   
       Emp emp =(Emp) sqlSession.selectOne("empspace.selectEmp", 1);   
        System.out.println(emp.getEname());
        return emp;
    }

    public Emp login(Emp praraEmp)
    {
        
        Emp resultEmp =(Emp) sqlSession.selectOne("empspace.selectEmp",praraEmp); 
        
        return resultEmp;
    }
    
}

 

 

 

POJO类

 

/**
 * @(#)Emp.java 1.0 Jul 6, 2011
 * @Copyright:  Copyright 2000 - 2011 ISoftStone Tech. Co. Ltd. All Rights Reserved.
 * @Description: 
 * 
 * Modification History:
 * Date:        Jul 6, 2011
 * Author:      YuSheng 245
 * Version:     ODS V100R001C06
 * Description: (Initialize)
 * Reviewer:    
 * Review Date: 
 */
package com.test.map;

public class Emp
{
    private String empno;
    
    private String ename;
    
    private String password;
    
    private String username;
    
    private  int  age;
    
    private String sex;
    
    private int deptno;
    
    /*
     * 对应的是 emp.xml中 
     * <association property="salary" column="salary_empno"
			javaType="Salary" resultMap="salaryResult" />
     */
    private Object salary;
    
    
    public int getDeptno()
    {
        return deptno;
    }

    public void setDeptno(int deptno)
    {
        this.deptno = deptno;
    }

    public Object getSalary()
    {
        return salary;
    }

    public void setSalary(Object salary)
    {
        this.salary = salary;
    }

    public Emp(){
        
    }
    
    public String getPassword()
    {
        return password;
    }

    public void setPassword(String password)
    {
        this.password = password;
    }

    public String getUsername()
    {
        return username;
    }

    public void setUsername(String username)
    {
        this.username = username;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public String getSex()
    {
        return sex;
    }

    public void setSex(String sex)
    {
        this.sex = sex;
    }

    public String  getEmpno()
    {
        return empno;
    }
    
    public void setEmpno(String empno)
    {
        this.empno = empno;
    }
    
    public String getEname()
    {
        return ename;
    }
    
    public void setEname(String ename)
    {
        this.ename = ename;
    }
    
}

 

 

/**
 * @(#)Salary.java 1.0 Jul 7, 2011
 * @Copyright:  Copyright 2000 - 2011 ISoftStone Tech. Co. Ltd. All Rights Reserved.
 * @Description: 
 * 
 * Modification History:
 * Date:        Jul 7, 2011
 * Author:      YuSheng 245
 * Version:     ODS V100R001C06
 * Description: (Initialize)
 * Reviewer:    
 * Review Date: 
 */
package com.test.map;

public class Salary
{
    private String empno;
    
    private double salary;
    
    public String getEmpno()
    {
        return empno;
    }
    
    public void setEmpno(String empno)
    {
        this.empno = empno;
    }
    
    public double getSalary()
    {
        return salary;
    }
    
    public void setSalary(double salary)
    {
        this.salary = salary;
    }
    
}

 

 

 

 

--表没任何意义只是为了做个例子

create table emp(
  empno number primary key,
  ename varchar2(16),
  password varchar2(16),
  username varchar2(16),
  age number 
  sex varchar2(2),
  deptno number
)

create table salary(
 empno number primary key,
 salary number
)

 然后上传我的工程

1
1
分享到:
评论
1 楼 tcl88112 2012-08-28  
谢谢

相关推荐

    struts2.1.8+spring3.0+ibatis2.3优雅框架

    在Struts2与iBatis的整合中,Spring作为核心容器,负责管理对象的生命周期和装配,通过IoC(Inversion of Control)来解耦应用组件。Spring的AOP功能可以方便地实现跨切面的关注点,如日志记录、性能监控等。此外,...

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 记得改数据库访问地址以及数据库登录用户名密码 项目访问路径 localhost:8080/SSI_Demo1 一个简单的例子(Oracle数据库增删改查...

    Struts2+Ibatis+Spring3.0完整项目(直接运行)

    耗时3天,对Struts2+Ibatis+Spring3.0+JreeChart进行了完整整合 包括Spring3.0的事务配置 OSCache二级缓存的配置 log4j实现输出Sql到控制台 JfreeChart与Struts2,Spring3.0的整合 对一个简单的表实现查询,批量删除...

    struts2.1.8.1+ibatis2.3.4.7+spring3.0完美整合小测试

    6. **测试**:创建ssiTest项目,编写测试用例,验证Struts2、iBatis和Spring的整合是否成功。测试包括Action的执行流程、Service层业务逻辑处理、DAO层的数据操作等。 通过这样的整合,我们可以充分利用每个框架的...

    培训信息发布平台v1.0

    培训信息发布平台v1.0(企业端) ...这个项目是在以前做过的一个小项目的基础上整理而得,实现的功能很简单,还很不完备,只是那时学习struts2 + Spring2.5 + iBatis2.3 + ExtJs3.0整合开发的一个习作。

    SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)

    【SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)】 在软件开发中,集成多种框架可以提高应用程序的灵活性和可维护性。SSI框架是指Struts、Spring和iBatis的集成,这三种框架分别负责MVC模式中的...

    dao.rar_spring-dao

    描述中提到的"一个综合系统的完整代码三struts.hibernate3.0,spring的结构"表明这是一个包含三层架构(MVC)的系统,采用了Struts作为表现层框架,Hibernate3.0作为持久层框架,以及Spring作为控制层和业务层的支撑...

    Spring+Struts2+Spring3+Hibernate3三大框架整合

    在JavaEE应用程序开发中,Spring、Struts2和Hibernate3是三个非常重要的框架,它们各自负责不同的职责,而将它们整合在一起可以构建出强大的企业级应用。Spring作为核心框架,提供了依赖注入、AOP(面向切面编程)、...

    Spring 3.0+Struts2+Mybatis 3 + p6spy 平台框架

    这是自己整合的Spring 3.0+Struts2+Mybatis 3 + p6spy +ehcache的平台框架,内含一点示例代码,目前ehcache没有使用。直接编译后发布就能用 测试环境基于JDK1.6+Tomcat 6.0. 大家拿到后请根据实际情况修改 ...

    spring3.0架包

    19. `org.springframework.web.struts-3.0.0.RELEASE`:为整合Struts框架提供了支持,允许在Struts应用中无缝集成Spring的功能。 20. `org.springframework.web-3.0.0.RELEASE`:包含Spring Web下的各种工具类和...

    各类API文档集合:XHTML\HTML5\CSS3.0\PHP5\JDK1.6\Spring2\Struts\ibatis

    - Struts2是基于MVC模式的Web框架,它整合了其他开源框架,如Hibernate和Spring,提供强大的动作控制和结果映射,增强了Web应用的结构和可维护性。 7. **iBatis**: - iBatis是轻量级的Java持久层框架,它允许...

    EXTJS3.0登陆DEMO

    EXTJS3.0登录DEMO是一个基于EXTJS框架的示例项目,展示了如何将EXTJS与STRUTS2、SPRING和IBATIS等流行Java技术整合,构建一个完整的Web应用程序。EXTJS是一个用于创建富客户端界面的JavaScript库,而STRUTS2、SPRING...

    SSI框架整合开发所需的所有架包

    整合这些框架,开发者可以充分利用它们各自的优势,如Seam的集成能力,Spring的灵活性,Struts2的MVC结构,以及iBATIS的数据库操作便利性。在实际项目中,通常会将Seam作为主框架,Spring处理服务层,Struts2处理...

    SSI框架整合(Oracle数据库增删改查示例)

    SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...

    SSI的jar包

    - iBatis的jar包:如ibatis-3.0.jar或mybatis-x.x.x.jar,它是iBatis的主要库文件,可能还包括mybatis-spring.jar,用于整合Spring和iBatis。 在Java Web开发中,这三者通常结合使用,Spring作为基础框架负责依赖...

    Spring3(8-13)

    - **10.2 集成Struts1.x**:Spring与Struts1.x的整合主要通过Interceptor和ActionSupport类的扩展,实现了业务逻辑和视图的分离。 - **10.3 集成Struts2.x**:Spring与Struts2.x的集成通常通过Spring插件实现,...

    spring3.1包名解析

    19. `org.springframework.web.struts-3.1.0.M1.jar`: 与Struts框架的整合,使得Spring与Struts可以无缝协作。 20. `org.springframework.web-3.1.0.M1.jar`: 包含Spring Web模块的基本工具,是处理Web请求和响应的...

    SSI oracle 工程实例

    标题中的"SSI oracle 工程实例"指的是一个融合了Struts、Spring和iBatis三个框架的Oracle数据库工程示例。这个项目可能是为了演示或教学如何在Java Web开发中有效地集成这三个流行的技术,并且利用Oracle数据库来...

Global site tag (gtag.js) - Google Analytics