首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring跟iBatis整合的例子

2012-08-30 
Spring和iBatis整合的例子OR Mapping的思想相信不用多说大家都明白了,在这里我选择的是ibatis由于手动的控

Spring和iBatis整合的例子

OR Mapping的思想相信不用多说大家都明白了,在这里我选择的是ibatis由于手动的控制事务会带来很多额外的工作,同时也没有很好的体现面向对象的思想,因而利用ibatis整合spring ;由于要注意的细节非常多现在整理核心步骤如下:

配置前需把ibatis的jar导入到工程,这里从略

一 web.xml的配置

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"    xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>InserttoDBServlet</servlet-name>    <servlet-class>service.InserttoDBServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>InserttoDBServlet</servlet-name>    <url-pattern>/InserttoDBServlet</url-pattern>  </servlet-mapping>   <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>        classpath:applicationContext.xml    </param-value></context-param><listener>    <listener-class>        org.springframework.web.context.ContextLoaderListener    </listener-class></listener> <servlet>        <servlet-name>action</servlet-name>        <servlet-class>            org.apache.struts.action.ActionServlet        </servlet-class>        <init-param>            <param-name>config</param-name>            <param-value>/WEB-INF/struts-config.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>TestServlet</servlet-name>    <servlet-class>test.TestServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>action</servlet-name>        <url-pattern>*.do</url-pattern>    </servlet-mapping>  <servlet-mapping>    <servlet-name>TestServlet</servlet-name>    <url-pattern>/servlet/TestServlet</url-pattern>  </servlet-mapping>   <filter>      <filter-name>ExtFilter</filter-name>     <filter-class>filter.ExtFilter</filter-class>     </filter>   <filter-mapping>     <filter-name>ExtFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping> </web-app>

二 applicationContext.xml文件的配置
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean id="transactionManager"        ref="dataSource_oracle" />    </bean>    <bean id="dataSource"        />        <property name="url" value="jdbc:mysql://localhost:3306/test" />        <property name="username" value="root" />        <property name="password" value="root" />        <property name="initialSize" value="1" />        <property name="maxActive" value="4" />    </bean>    <bean id="dataSource_oracle"        />        <property name="url" value="jdbc:oracle:thin:@192.168.100.235:1521:mpptest" />        <property name="username" value="gmcc" />        <property name="password" value="skywin" />        <property name="initialSize" value="1" />        <property name="maxActive" value="4" />    </bean>    <bean id="sqlMapClient"        />        <property name="dataSource" ref="dataSource_oracle" />    </bean>    <bean id="baseTxService"        ref="transactionManager" />        <property name="proxyTargetClass" value="true" />        <property name="transactionAttributes">            <props>                <prop key="insert*">PROPAGATION_REQUIRED</prop>                <prop key="query*">readOnly</prop>                <prop key="get*">readOnly</prop>                <prop key="del*">PROPAGATION_REQUIRED</prop>                <prop key="update*">PROPAGATION_REQUIRED</prop>            </props>        </property>    </bean>       <bean id="studentDao" ref="sqlMapClient"></property>    </bean>       <bean id="studentService" ref="studentDao"></property>    </bean>       <bean id="studentServiceProxy" parent="baseTxService">       <property name="target" ref="studentService"></property>    </bean>       <bean id="treeService" ref="treeDao"></property>    </bean>       <bean id="treeServiceProxy" parent="baseTxService">       <property name="target" ref="treeService"></property>    </bean>       <bean id="treeDao" ref="sqlMapClient"></property>    </bean>       <bean id="xmlTreeService" name="code"><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>    <sqlMap resource="student_oracle.xml" />    <sqlMap resource="treeNode_oracle.xml" /></sqlMapConfig>

四 ormpping文件的配置(student_oracle.xml等 )
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap         PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"         "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="Student_oracle">    <resultMap id="result"        column="id"            columnIndex="1" />        <result property="name" column="stuname"            columnIndex="2" />        <result property="password" column="stupassword" columnIndex="3" />    </resultMap>    <insert id="insertToDb">        insert into test_qjk_stu(id,stuname,stupassword)values(#stuId#,#name#,#password#)    </insert>       <insert id="insertTest">        <selectKey resultkeyProperty="stuId">                 SELECT test_qjk_stu_seq.nextval FROM DUAL            </selectKey>        insert into test_qjk_stu(id,stuname,stupassword)values(#stuId#,#name#,#password#)        </insert></sqlMap>

五 实体bean代码
package entity;import java.util.Date;public class Student {       private Integer stuId;    private String name;    private Date birthday;    private String sex;    private String passport;    private byte[] password;       public byte[] getPassword() {        return password;    }    public void setPassword(byte[] password) {        this.password = password;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassport() {        return passport;    }    public void setPassport(String passport) {        this.passport = passport;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }       public Integer getStuId() {        return stuId;    }    public void setStuId(Integer stuId) {        this.stuId = stuId;    }    public String toString(){        return "stuid:"+stuId+"---name:"+name+"---passport:"+passport+"-----sex:"+sex+"--birthday:"+birthday;    }}

六 dao实现类
package dao;import java.sql.SQLException;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import util.Print;import entity.Student;public class StudentDaoImpl extends SqlMapClientDaoSupport implements StudentDao {    public void insertToDb(Student stu) {                 getSqlMapClientTemplate().insert("insertToDb", stu);    }    public Student queryStuById(Integer id) {        Student stu=(Student) getSqlMapClientTemplate().queryForObject("queryStuById", id);        Print.contrlPrint("dao查到的对象是"+stu);        return stu;    }    public List getSomeStu(int start, int pageSize) {        System.out.println("dao ---start"+start);        System.out.println("dao ---pageSize"+pageSize);        List list=getSqlMapClientTemplate().queryForList("queryStudent", null, start, pageSize);        System.out.println("dao---list---size"+list.size());        return list;    }    public Long getStudentCount() {        return (Long) getSqlMapClientTemplate().queryForObject("getStudentCount", null);    }    public void delStuById(Long stuId) {          getSqlMapClientTemplate().delete("delStuById", stuId);           }    public void updateStudent(Student stu) {        getSqlMapClientTemplate().update("updateStudent", stu);           }          public List test(){        return getSqlMapClientTemplate().queryForList("test",null);          }    public Integer insertTest(Student stu) {        Print.contrlPrint("调用了insertTest");        return (Integer) getSqlMapClientTemplate().insert("insertTest", stu);    }}

七 业务层实现类
package service;import java.util.List;import util.Tools;import dao.StudentDao;import entity.Student;public class StudentServiceImpl implements StudentService {    private StudentDao studentDao;       public void insertToDb(Student stu) {               studentDao.insertToDb(stu);//        Integer  id=studentDao.insertTest(stu);//        System.out.println("插入记录的id是"+id);    }    public StudentDao getStudentDao() {        return studentDao;    }    public void setStudentDao(StudentDao studentDao) {        this.studentDao = studentDao;    }    public Student queryById(Integer id) {               return studentDao.queryStuById(id);    }    public List getSomeStu(int start, int pageSize) {               return studentDao.getSomeStu(start, pageSize);    }    public String getResponseJson(int start, int pageSize) {        List list=getSomeStu(start, pageSize);        Long count=getStudentCount();        return Tools.getResponseJson(list,count);    }    public Long getStudentCount() {               return studentDao.getStudentCount();    }    public void delStuById(Long stuId) {        studentDao.delStuById(stuId);           }    public void updateStudent(Student stu) {        studentDao.updateStudent(stu);    }}

热点排行