`
zpball
  • 浏览: 917034 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring和ibatis的整合

阅读更多
ormmping的思想相信不用多说大家都明白了,在这里我选择的是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"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource_oracle" />
    </bean> 

    <bean id="dataSource"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName"
            value="com.mysql.jdbc.Driver" />
        <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"
        class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName"
            value="oracle.jdbc.OracleDriver" />
        <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"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation"
            value="classpath:sqlmap-config.xml" />
        <property name="dataSource" ref="dataSource_oracle" />
    </bean> 

    <bean id="baseTxService"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
        abstract="true">
        <property name="transactionManager" 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" class="dao.StudentDaoImpl">
       <property name="sqlMapClient" ref="sqlMapClient"></property>
    </bean>
    
    
    <bean id="studentService" class="service.StudentServiceImpl">
        <property name="studentDao" ref="studentDao"></property>
    </bean>
    
    
    <bean id="studentServiceProxy" parent="baseTxService">
       <property name="target" ref="studentService"></property>
    </bean> 
    
    <bean id="treeService" class="service.TreeServiceImpl_map">
         <property name="treeDao" ref="treeDao"></property>
    </bean>
    
    <bean id="treeServiceProxy" parent="baseTxService">
       <property name="target" ref="treeService"></property>
    </bean>
    
    
    <bean id="treeDao" class="dao.TreeDaoImpl">
       <property name="sqlMapClient" ref="sqlMapClient"></property>
    </bean>
    
    
    <bean id="xmlTreeService" class="service.XmlTreeServiceImpl"></bean>
    
    
    
</beans>






三 sqlmap-config.xml 文件配置

<!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"
        class="entity.Student">
        <result property="stuId" 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 resultClass="Integer" keyProperty="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);
    }

}



分享到:
评论

相关推荐

    spring和ibatis整合

    4. **MyBatis-Spring库**:这是一个专门用于整合Spring和iBatis的库,它提供了一些便捷的bean,如SqlSessionTemplate和SqlSessionFactoryBean,可以简化整合过程。 5. **事务管理**:Spring的...

    spring ibatis整合所需jar包

    接下来,我们将详细讨论Spring和iBatis整合的关键步骤: 1. 添加依赖:在`spring ibatis整合所需jar包`中,通常包含以下关键jar文件: - spring核心库:如spring-context、spring-beans、spring-aop等,用于Spring...

    ▲Struts+Spring和iBatis整合

    整合Struts、Spring和iBatis的优势在于,Struts提供了良好的前端控制器,Spring提供了强大的依赖注入和事务管理,而iBatis则简化了SQL操作。这种组合可以有效地解耦各个组件,提高代码的可读性和可维护性,使得大型...

    spring+ibatis整合web所需ibatis包

    通过以上步骤,你可以成功地将Spring和iBatis整合在一起,实现高效且易于维护的企业级Web应用。在实际开发中,还要注意数据库连接池的选择,日志系统的配置,以及错误处理和异常封装,以提升整个系统的稳定性和健壮...

    struts2 + spring + ibatis 整合例子

    通过Struts2、Spring和iBatis的整合,我们可以实现模型、视图和控制的分离,提高代码的可读性和可维护性。同时,Spring的DI和AOP特性使得对象管理更加灵活,iBatis则提供了方便的数据库操作方式。这样的组合在企业级...

    spring与ibatis整合集成实例

    在整合 Spring 和 iBATIS 进行项目开发时,主要涉及以下几个关键知识点: 1. **依赖注入 (Dependency Injection, DI)**:Spring 的核心特性之一,通过 DI 可以使代码更松耦合,易于测试和维护。在整合 iBATIS 时,...

    spring_ibatis整合案例

    在IT行业中,Spring框架与iBatis(现为MyBatis)的整合是常见的数据访问层解决方案,尤其在企业级应用开发中极为普遍。Spring是一个全面的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...

    Strust2+Spring+ibatis整合开发实例

    以上就是Struts2、Spring和iBatis整合开发的基本概念和步骤。这种整合方式可以帮助开发者更好地组织代码,提高开发效率,同时也能实现松耦合和灵活的架构设计。在实际项目中,还可以结合其他技术,如Hibernate、...

    struts2、spring、ibatis整合实例

    struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例 struts2、spring、ibatis整合实例

    spring整合ibatis

    通过以上步骤,我们可以成功地将Spring和iBatis整合起来,实现了一个灵活且易于维护的数据库访问层。这种方式的优点在于,Spring可以帮助管理事务,提供统一的异常处理,而iBatis则负责SQL的执行,两者结合可以避免...

    spring3 ibatis整合实例

    Spring3 和 iBatis 整合是一个常见的Java企业级应用开发模式,主要用于构建灵活、可扩展的后端数据访问层。这个项目实例提供了一个详细的学习资源,帮助新手掌握这两种技术的融合。以下是对这个整合实例的详细解析:...

    Struts2+Spring+Ibatis整合

    "Struts2+Spring+iBatis整合"是一个典型的MVC(Model-View-Controller)架构实现,适用于构建大型企业级应用。下面将详细介绍这三个框架以及它们整合的关键点。 **Struts2** 是一个基于MVC设计模式的Web应用框架,...

    Spring对IBatis的整合

    通过对Spring与IBatis整合的理解和实践,我们可以看到Spring为IBatis提供了非常全面的支持。这种整合不仅可以简化代码,还能提高应用程序的性能和稳定性。通过本章节的学习,开发者应该能够掌握如何使用Spring来有效...

    Spring+iBatis整合详解

    ### Spring与iBatis整合详解 #### 一、前言 在Java企业级应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力深受开发者喜爱,而iBatis(现更名为MyBatis)作为一款优秀的持久层框架,通过...

    spring3.2与Ibatis整合

    7. **测试**:在Spring与iBatis整合后,可以使用Spring的`@Transactional`注解进行单元测试,确保每个方法都在独立的事务中执行,便于模拟各种数据状态并进行断言。 以上就是关于"Spring 3.2与iBatis整合"及"在...

    iBatis和Spring整合

    iBatis和Spring整合 iBatis和Spring整合

    struts2+spring+ibatis整合项目实例

    `Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...

    Struts+Spring+Ibatis整合框架搭建配置文档

    ### Struts+Spring+Ibatis整合框架搭建配置详解 在当今复杂的软件开发环境中,整合不同的框架以构建高效、可维护的应用程序变得尤为重要。Struts、Spring与Ibatis(现称MyBatis)作为三个功能互补的Java框架,它们...

    spring+ibatis所需要的jar包

    当Spring和iBatis整合时,我们可以利用Spring的DI特性来管理iBatis的SqlSessionFactory和SqlSession,将数据库操作集成到Spring的Bean中。这样,我们可以在Spring的配置文件中定义数据源、事务管理器、...

    spring+struts2+ibatis整合的jar包

    当我们把Spring、Struts2和iBatis整合在一起时,可以构建出一个高效、模块化的Web应用。Spring作为整体的框架容器,负责管理所有的Bean,包括Struts2和iBatis的相关组件。Struts2处理HTTP请求,调用Spring管理的业务...

Global site tag (gtag.js) - Google Analytics