读书人

struts2_spring_ibatis3.0调整

发布时间: 2012-09-22 21:54:54 作者: rapoo

struts2_spring_ibatis3.0整合

好久没弄过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"ref="empDao"></property></bean><!-- 加载 abities SqlSessionFactoryBean 这里是与ibatis以前版本区别的地方 这里不是继承 sprig的FactoryBean 因为spring的版本没有更新 由ibatis jar包自己开发类继承了 spring的FactoryBean类 另外必备属性:dataSource   --><bean id="sqlMapClient"/></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" ref="sqlMapClient" />    </bean>        <!-- 通过spring 把已经加载ibatis配置文件sqlMapClient bean 注入到 dao类 供dao类查询数据 -->    <bean id="empDao" /></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.OracleDriveroracle.database.url=jdbc:oracle:thin:@10.38.146.158:1521:oracleoracle.database.user=scottoracle.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.loginparameterType 传入参数类型: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" ><result name="success">/Success.jsp</result></action><action name="queryEmp" method="queryEmp" >  <result name="success">/Success.jsp</result>  </action>    <action name="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)

?然后上传我的工程

谢谢

读书人网 >Web前端

热点推荐