`
todd_liu
  • 浏览: 66071 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

【转】Spring+iBatis整合

阅读更多
Spring+iBatis整合
2008-03-19 10:24 A.M.

   ibatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2:
1.首先把用到的包导入进来,此例用的是spring-framework-1.2.7,iBATIS_DBL-2.1.7.597,mysql的数
据库连接包用的是mysql-connector-java-5.0.3-bin.jar.

2.建POJO类,在此我们用的是一个Student类.
package cn.itcast;

public class Student implements java.io.Serializable {
   private Integer id;

   private String firstname;

   private String lastname;

   public String getFirstname() {
    return firstname;
   }

   public void setFirstname(String firstname) {
    this.firstname = firstname;
   }

   public Integer getId() {
    return id;
   }

   public void setId(Integer id) {
    this.id = id;
   }

   public String getLastname() {
    return lastname;
   }

   public void setLastname(String lastname) {
    this.lastname = lastname;
   }
}

3.POJO的映射文件Student.xml,在这里面只有两个功能,即根据student的id检索出一个Student对象,另一
个就是向数据库插入一条记录(一个Student对象),注意:此应用程序中所有的配置文件(xml文件和
properties文件都放在configfile包下面).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd ">
<!--这是POJO映射文件的根元素-->
<sqlMap namespace="Student">
   <!--select元素的id属性用来标识此元素,resultClass属性的值是Java类的全限定名(即包括类的包名)。
   resultClass属性可以让您指定一个Java类,根据ResultSetMetaData将其自动映射到JDBC的ResultSet。
   只要是Java Bean的属性名称和ResultSet的列名匹配,属性自动赋值给列值。
   parameterClass属性是参数的类型,此属性的值是Java类的全限定名(即包括类的包名)。
   它是可选的,但强烈建议使用。它的目的是 限制输入参数的类型为指定的Java类,并
   优化框架的性能。-->
   <select id="getStudentById" resultClass="cn.itcast.Student" parameterClass="int">
    select id,firstname,lastname from student where id=#value#
   </select>
  
   <insert id="insertStudent" parameterClass="cn.itcast.Student">
    insert into student(firstname,lastname) values(#firstname#,#lastname#)
   </insert>
</sqlMap>

4.建一个SqlMap的配置文件sql-map-config.xml,sqlMap元素的resource属性告诉Spring去哪找POJO映射文件.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd ">
<sqlMapConfig>
   <sqlMap resource="configfile/Student.xml" />
</sqlMapConfig>

5.jdbc.properties文件,存储数据库连接的driver,url,username,password等信息,
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/itcast
jdbc.username=root
jdbc.password=


6.Spring配置文件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告诉Spring去哪找数据库的配置信息,因为有此Bean才出现下面用${}标记来取变量的语句-->
   <bean id="propertyConfig"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
     <value>configfile/jdbc.properties</value>
    </property>
   </bean>

   <!--配置一个数据源,根据上面propertyConfig指定的location去找数据库连接的配置信息-->
   <bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
     <value>${jdbc.driver}</value>
    </property>
    <property name="url">
     <value>${jdbc.url}</value>
    </property>
    <property name="username">
     <value>${jdbc.username}</value>
    </property>
    <property name="password">
     <value>${jdbc.password}</value>
    </property>
   </bean>

   <!--根据dataSource和configLocation创建一个SqlMapClient-->
   <bean id="sqlMapClient"
    class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation">
     <value>configfile/sql-map-config.xml</value>
    </property>
    <property name="dataSource">
     <ref bean="dataSource" />
    </property>
   </bean>

   <!--根据sqlMapClien创建一个SqlMapClient模版类-->
   <bean id="sqlMapClientTemplate"
    class="org.springframework.orm.ibatis.SqlMapClientTemplate">
    <property name="sqlMapClient">
     <ref bean="sqlMapClient" />
    </property>
   </bean>
  
   <!--将上面的模版类织入到我们的DAO对象中-->
   <bean id="studentDao" class="cn.itcast.StudentDaoSqlMap">
    <property name="sqlMapClientTemplate">
     <ref bean="sqlMapClientTemplate" />
    </property>
   </bean>

</beans>

7.StudentDaoSqlMap 是一个DAO,它负责和数据库的交互,在这里实现了查询单条记录和插入单条记录的功能.
package cn.itcast;

import org.springframework.orm.ibatis.SqlMapClientTemplate;

public class StudentDaoSqlMap {

//[1]
   private SqlMapClientTemplate sqlMapClientTemplate;

   public SqlMapClientTemplate getSqlMapClientTemplate() {
    return sqlMapClientTemplate;
   }

   public void setSqlMapClientTemplate(
     SqlMapClientTemplate sqlMapClientTemplate) {
    this.sqlMapClientTemplate = sqlMapClientTemplate;
   }

   //此方法的返回值与Student.xml的select元素的resultClass对应.
   public Student getStudent(Integer id) {
    return (Student) sqlMapClientTemplate.queryForObject("getStudentById",id);
    //注意:queryForObject方法返回一个Object,第一个参数与Student.xml的select元素
    //的id属性值对应,第二个参数的类型与Student.xml的select元素的parameterClass
    //属性值对应.
   }

   public Object insertStudent(Student student) {
    return sqlMapClientTemplate.insert("insertStudent", student);
   }
}

8.下面写一个带main函数的类来测试上面的代码.代码非常简单就不再解释了.
package cn.itcast;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

   public static void main(String[] args) {
    //[2]
    ApplicationContext factory = new ClassPathXmlApplicationContext(
      "applicationContext.xml");

    StudentDaoSqlMap studentDao = (StudentDaoSqlMap) factory
      .getBean("studentDao");
   
    //插入一个student
    Student student = new Student();
    student.setFirstname("tian");
    student.setLastname("xiangdong");
    studentDao.insertStudent(student);

    //查询出id是1的Student对象.
    //Student student = studentDao.getStudent(1);
    //System.out.println(student.getId());
    //System.out.println(student.getFirstname());
    //System.out.println(student.getLastname());
   }

}


###########################
准备玩spring,搞个入门的看看,

[1]DAO可以继承SqlMapClientDaoSupport类省得写sqlmapclienttemplate的get,set,前面的注入依然有效
[2]spring在web里还是用WebApplicationContextUtils.getWebApplicationContext()获取上下文,配置文件放到WEB-INF文件夹下比较舒服
分享到:
评论

相关推荐

    spring+struts2+ibatis整合的jar包

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

    Struts2+Spring+Ibatis整合的简单人事管理系统

    Struts2+Spring+Ibatis整合的简单人事管理系统 没分了,转载过来的,有需要的看看吧,我觉得不错~~

    struts2 + spring + ibatis 整合例子

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

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

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

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

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

    struts2+spring+ibatis整合项目实例

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

    struts2+spring+Ibatis框架包

    在SSi框架中,Spring通常用于管理Bean的生命周期,提供事务控制,以及整合其他框架,如iBatis。 iBatis是一个持久层框架,它将SQL语句与Java代码分离,降低了数据访问层的复杂性。它允许开发者直接编写SQL,然后...

    Spring+Struts2+Ibatis整合例子

    **Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...

    Struts+Spring+Ibatis整合的Jar包

    在"Struts+Spring+Ibatis整合的Jar包"中,这三者通过合理的配置和接口调用相互协同工作,实现了数据访问、业务逻辑处理和用户界面展示的完美结合。首先,Struts2作为控制器,接收用户的请求并转发给Spring管理的业务...

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

    它与Spring整合后,可以在Spring的事务管理下执行数据库操作,确保数据的一致性。 在"车辆费用"这个具体的应用场景中,我们可能有一个名为`VehicleExpense`的实体类,包含了车辆费用相关的属性,如费用类型、金额、...

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    spring+struts2+ibatis简单登录实例--特别适新人学习

    一个简单的spring+struts+ibatis整合的实例,实现了用户登录,用户登录成功则显示欢迎信息,失败则显示用户名或密码错误,该实例非常简单基础,特别适合新人学习,工程包含了必要的资源包,部署到服务器中及可运行,...

    Struts2+spring+ibatis三大框架整合实例

    6. **整合Spring和iBatis**:在Spring配置文件中配置SqlSessionFactory,使用SqlSessionTemplate或SqlSessionDaoSupport来实现DAO层。 7. **编写业务逻辑**:创建Action类,注入业务服务,调用服务方法完成业务逻辑...

    Struts2+Spring+Ibatis整合

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

    webwork+spring+ibatis很适合初学者的实例

    iBATIS与Spring的整合允许通过Spring的DAO和Service层直接调用SQL映射文件,实现透明化的数据库操作。 **初学者实例**: "webwork+spring+ibatis" 的实例通常会展示如何将这三个框架集成到一个完整的Web项目中。这...

    spring+springMVC+iBatis+Json整合所需jar包

    在Java Web开发中,Spring、SpringMVC和iBatis是三个非常重要的框架,它们各自负责不同的职责。Spring作为一个全面的轻量级容器,管理着应用的bean和依赖注入;SpringMVC则作为Spring的Web模块,处理HTTP请求和响应...

    struts+spring+ibatis框架

    在"struts+spring+ibatis"的整合应用中,Spring通常作为核心,管理Struts的Action以及iBatis的数据访问对象(DAO)。Struts处理HTTP请求,将请求转发给Spring管理的Action,Action再通过Spring的依赖注入获取到...

    flex+spring+struts2+ibatis 整合的eclipse工程

    flex+spring+struts2+ibatis 整合的eclipse工程,可以导入eclipse环境下直接使用,因为加入开发的jar大于了上传的最大限制,只能把jar另外打包上传,下载可以从我上传资源的lib1,lib2下载,这个工程的搭建花费了我两...

    struts2+spring3+ibatis项目整合案例

    在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何相互配合,实现项目的集成。 Struts2作为MVC(Model-View-Controller)架构的实现,主要负责处理用户请求,控制应用的流程。它提供...

    Spring+Struts+ibatis讲解

    Spring+Struts+ibatis的整合使得各层之间解耦,提高了代码的可维护性和可扩展性。Spring负责管理对象的生命周期和依赖关系,Struts2提供了MVC架构,而Ibatis作为持久层框架,简化了数据库操作。这样的架构在过去的...

Global site tag (gtag.js) - Google Analytics