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

ibatis和Spring整合的详细例子

阅读更多

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 {
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 {
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) {
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());
}

}

分享到:
评论

相关推荐

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

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

    ibatis和spring整合开发 例子

    本篇文章将详细探讨如何将Ibatis与Spring进行整合开发,并提供一个实际的例子。 Ibatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在配置文件中,提供了灵活的映射机制,避免了ORM框架的过度抽象。而...

    iBatis与Spring整合的例子

    ### iBatis与Spring整合的例子 #### 一、概述 在现代软件开发中,整合不同的技术框架是非常常见的需求。本文将详细介绍如何将iBatis(现称为MyBatis)与Spring框架进行整合,并通过一个具体的例子来展示整合过程中...

    ibatis与Spring整合例子

    接下来,我们将详细讨论如何在Spring中整合iBATIS,以及涉及到的相关知识点。 首先,为了实现iBATIS和Spring的整合,我们需要引入相应的库文件。如文件描述所示,我们需要`spring-framework-1.2.7.jar`、`iBATIS_...

    struts+iBATIS+spring整合例子

    Struts、iBATIS和Spring是Java开发中常用的三大框架,它们各自负责不同的职责,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。本文将深入探讨这三者的核心概念、整合过程以及实际应用。 **Struts** ...

    ibatis+spring+struts2 整合开发例子

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

    ibatis 2 and spring 例子

    标题 "ibatis 2 and spring 例子" 指向的是一个关于如何集成并使用iBatis 2框架与Spring框架的示例教程。iBatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在配置文件中,避免了ORM(对象关系映射)框架...

    struts2+ibatis+spring的小例子

    整合Struts2、iBatis和Spring,开发者可以: - 使用Struts2的Action和结果映射来处理HTTP请求,提供控制器功能。 - 在iBatis的SQL映射文件中编写SQL,通过DAO层与数据库进行交互,确保数据库操作的独立性。 - 利用...

    backbone+bootstrap+ibatis+spring例子

    下面将详细介绍这些技术及其在"backbone+bootstrap+ibatis+spring例子"中的应用场景。 **Backbone.js** 是一个轻量级的JavaScript框架,主要用于构建结构化的前端应用。它提供了Model、View、Collection和Router等...

    spring+ibatis+ehcache整合例子

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

    ibatis+Spring+struts2整合实例

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

    struts+spring+ibatis+mysql整合小例子(适用于新手)

    Struts、Spring、Ibatis和Mysql是Java Web开发中常用的四大框架,它们组合在一起可以构建出高效、灵活的企业级应用程序。本示例是专为新手设计的一个整合教程,通过详细注解帮助初学者理解这四个组件如何协同工作。 ...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

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

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

    struts2 + spring + ibatis 整合例子

    Spring还包含了一个强大的数据访问集成层,支持多种持久化技术,包括JDBC、Hibernate和iBatis。 **iBatis框架**: iBatis是一个简单但功能强大的SQL映射框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和...

    struts2+ibatis+spring集成

    Struts2、iBatis和Spring是Java Web开发中的三个重要框架,它们分别负责MVC模式中的Action层...在实际项目中,还可以根据需要加入其他功能,如Hibernate ORM、MyBatis-Spring整合、缓存管理等,以进一步优化系统性能。

Global site tag (gtag.js) - Google Analytics