`

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"
        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);
    }

}
分享到:
评论

相关推荐

    struts2 + spring + ibatis 整合例子

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

    Spring+Struts2+Ibatis整合例子

    在这个整合例子中,由于jar文件过大未上传,所以具体的配置细节无法提供。但是,你可以参考上述的整合步骤,结合实际的项目需求,配置自己的Spring、Struts2和iBatis环境。记得在配置文件中仔细设置各个框架的连接,...

    Structs2.0+Spring2.5+Ibatis整合例子

    本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...

    Ibatis和Spring整合例子,实现增删改查功能

    Ibatis和Spring整合例子,实现增删改查功能.

    spring+ibatis+ehcache整合例子

    这个"spring+ibatis+ehcache整合例子"是一个完整的示例项目,展示了如何将这三个框架无缝集成到一个基于MySQL数据库的应用中。下面将详细介绍这三个框架及其整合的关键点。 **Spring框架** Spring是一个全面的企业...

    struts2、spring、ibatis整合

    在与Struts2和iBatis的整合中,Spring主要负责管理Bean的生命周期和依赖关系,以及事务的统一管理。Spring的事务管理可以基于编程式或者声明式,后者通过@Transactional注解实现,更符合开闭原则,降低了代码的耦合...

    struts+spring+ibatis整合示例 demo

    在Struts+Spring+iBatis整合中,通常会使用Spring的JdbcTemplate或MyBatis(iBatis的升级版)来执行SQL。 **整合过程**: 1. **配置Spring**:首先需要配置Spring的ApplicationContext,定义Bean的定义,包括Struts...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts+spring+ibatis做的一个增删改查例子

    Struts、Spring 和 iBATIS 是Java开发领域中三大经典的开源框架,它们组合起来可以构建出高效、可维护的企业级Web应用。这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑...

    webwork+spring+ibatis小例子

    在这个例子中,Spring可能被用来管理WebWork和iBATIS之间的依赖关系,以及提供事务管理服务。 iBATIS,现称为MyBatis,是一个持久层框架,它简化了SQL与Java代码的集成。iBATIS允许开发者编写动态SQL,将数据库操作...

    Struts2+Spring2+iBatis2整合的例子

    在"Struts2+Spring+iBatis整合的小例子"中,开发者通常会做以下工作: 1. **环境配置**:首先,确保JDK、Tomcat、MySQL等基础环境的安装和配置。然后,将Struts2、Spring、iBatis的相关jar包添加到项目的类路径中。...

    struts2+spring+ibatis整合实例

    在这个"Struts2+Spring+iBatis整合实例"中,我们将探讨这三个框架如何协同工作,以及如何通过"BookRoom"这个具体的应用来学习它们的整合。 Struts2作为一款强大的MVC框架,负责处理HTTP请求,提供控制器功能。它...

    一个struts+spring+ibatis的例子

    Struts、Spring 和 iBATIS 是三个非常重要的 Java 开发框架,它们在企业级应用程序开发中扮演着核心角色。这个例子结合了这三个框架,构建了一个完整的应用基础,为OA(办公自动化)系统的开发提供了一个良好的起点...

    spring的mvc整合ibatis例子

    以上就是Spring MVC与iBatis整合的基本步骤。通过这样的集成,我们可以利用Spring MVC的强大力量处理HTTP请求和路由,同时利用iBatis的灵活性来执行SQL,达到业务逻辑与数据访问的分离,提高代码的可维护性和可扩展...

    ibatis+spring+struts2 整合开发例子

    "ibatis+spring+struts2 整合开发例子"就是一个典型的Java Web应用集成开发案例,旨在帮助开发者理解和掌握这三大框架的协同工作原理。接下来,我们将详细讨论这三个组件以及它们的整合过程。 Ibatis是一个轻量级的...

    Spring与iBATIS的集成

    在软件开发领域,特别是Java企业级应用开发中,Spring框架和iBATIS(现已更名为MyBatis)是非常重要的两个技术组件。Spring作为一款全面的企业级应用解决方案,其核心功能包括依赖注入、面向切面编程以及容器管理等...

    struts2+spring+ibatis简单登录例子

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层...了解并实践这个简单的登录例子,有助于开发者更好地掌握Struts2、Spring和iBatis的整合使用,为更复杂的Web应用打下基础。

    ibatis+Spring+struts2整合实例

    本实例关注的是“ibatis+Spring+struts2”的整合,这是一个经典的Java Web开发组合,用于实现数据访问、业务逻辑控制和用户界面交互。下面我们将深入探讨这三个组件及其整合的关键知识点。 1. **iBATIS**:iBATIS...

    ibatis和Spring整合的详细例子

    ibatis和Spring整合的详细例子

Global site tag (gtag.js) - Google Analytics