好久没弄过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
)
然后上传我的工程
分享到:
相关推荐
在Struts2与iBatis的整合中,Spring作为核心容器,负责管理对象的生命周期和装配,通过IoC(Inversion of Control)来解耦应用组件。Spring的AOP功能可以方便地实现跨切面的关注点,如日志记录、性能监控等。此外,...
SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 记得改数据库访问地址以及数据库登录用户名密码 项目访问路径 localhost:8080/SSI_Demo1 一个简单的例子(Oracle数据库增删改查...
耗时3天,对Struts2+Ibatis+Spring3.0+JreeChart进行了完整整合 包括Spring3.0的事务配置 OSCache二级缓存的配置 log4j实现输出Sql到控制台 JfreeChart与Struts2,Spring3.0的整合 对一个简单的表实现查询,批量删除...
6. **测试**:创建ssiTest项目,编写测试用例,验证Struts2、iBatis和Spring的整合是否成功。测试包括Action的执行流程、Service层业务逻辑处理、DAO层的数据操作等。 通过这样的整合,我们可以充分利用每个框架的...
培训信息发布平台v1.0(企业端) ...这个项目是在以前做过的一个小项目的基础上整理而得,实现的功能很简单,还很不完备,只是那时学习struts2 + Spring2.5 + iBatis2.3 + ExtJs3.0整合开发的一个习作。
【SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)】 在软件开发中,集成多种框架可以提高应用程序的灵活性和可维护性。SSI框架是指Struts、Spring和iBatis的集成,这三种框架分别负责MVC模式中的...
描述中提到的"一个综合系统的完整代码三struts.hibernate3.0,spring的结构"表明这是一个包含三层架构(MVC)的系统,采用了Struts作为表现层框架,Hibernate3.0作为持久层框架,以及Spring作为控制层和业务层的支撑...
在JavaEE应用程序开发中,Spring、Struts2和Hibernate3是三个非常重要的框架,它们各自负责不同的职责,而将它们整合在一起可以构建出强大的企业级应用。Spring作为核心框架,提供了依赖注入、AOP(面向切面编程)、...
这是自己整合的Spring 3.0+Struts2+Mybatis 3 + p6spy +ehcache的平台框架,内含一点示例代码,目前ehcache没有使用。直接编译后发布就能用 测试环境基于JDK1.6+Tomcat 6.0. 大家拿到后请根据实际情况修改 ...
19. `org.springframework.web.struts-3.0.0.RELEASE`:为整合Struts框架提供了支持,允许在Struts应用中无缝集成Spring的功能。 20. `org.springframework.web-3.0.0.RELEASE`:包含Spring Web下的各种工具类和...
- Struts2是基于MVC模式的Web框架,它整合了其他开源框架,如Hibernate和Spring,提供强大的动作控制和结果映射,增强了Web应用的结构和可维护性。 7. **iBatis**: - iBatis是轻量级的Java持久层框架,它允许...
EXTJS3.0登录DEMO是一个基于EXTJS框架的示例项目,展示了如何将EXTJS与STRUTS2、SPRING和IBATIS等流行Java技术整合,构建一个完整的Web应用程序。EXTJS是一个用于创建富客户端界面的JavaScript库,而STRUTS2、SPRING...
整合这些框架,开发者可以充分利用它们各自的优势,如Seam的集成能力,Spring的灵活性,Struts2的MVC结构,以及iBATIS的数据库操作便利性。在实际项目中,通常会将Seam作为主框架,Spring处理服务层,Struts2处理...
SSI框架整合(Struts2.1+Spring3.0+Ibatis 2.3) 下载之后执行.sql文件创建表和sequence 项目访问路径 localhost:8888/SSI_Demo1 一个简单的例子(Oracle数据库增删改查示例) 用户的增删改查操作,适合初学者...
- iBatis的jar包:如ibatis-3.0.jar或mybatis-x.x.x.jar,它是iBatis的主要库文件,可能还包括mybatis-spring.jar,用于整合Spring和iBatis。 在Java Web开发中,这三者通常结合使用,Spring作为基础框架负责依赖...
- **10.2 集成Struts1.x**:Spring与Struts1.x的整合主要通过Interceptor和ActionSupport类的扩展,实现了业务逻辑和视图的分离。 - **10.3 集成Struts2.x**:Spring与Struts2.x的集成通常通过Spring插件实现,...
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 工程实例"指的是一个融合了Struts、Spring和iBatis三个框架的Oracle数据库工程示例。这个项目可能是为了演示或教学如何在Java Web开发中有效地集成这三个流行的技术,并且利用Oracle数据库来...