- 浏览: 305904 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jakejone:
起作用了,谢谢啦
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date -
BadBoyPgm:
不错 工作中刚好用到 看看知道怎么回事
ServletContextListener 应用 -
ifox:
不错哦,这个有用。找了好久呢、
struts2 iterator status index -
输入法:
上面书籍里有详细介绍?
js 获取select option 值 value text -
feihuale:
不错。。。真好,,,,学习了。。。
The error occurred while applying a parameter map.
Spring+iBatis整合详解
ibatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2:
1.首先把用到的包导入进来,此例用的是spring-framework-2.5,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 {
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整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2:
1.首先把用到的包导入进来,此例用的是spring-framework-2.5,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 {
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());
}
}
发表评论
-
struts2 redirect 参数 取不到
2009-12-03 16:07 2306关键字: struts2 redirect 参数 取不到 ... -
spring定时任务
2009-08-17 15:48 2100applicationContext.xml <?xm ... -
spring quartz 多定时任务
2009-08-17 15:31 1529<bean id="TaskAuto&qu ... -
The error occurred while applying a parameter map.
2009-08-17 11:37 21185关于“The error occurred whi ... -
用HttpSessionAttributeListener接口实现在线统计
2009-08-16 12:14 1358以下是一些不详细的代码,主要是说明原理: 捕获Sessio ... -
struts2 iterator status index
2009-08-14 17:34 11235<script type="text/ja ... -
ibatis The error occurred while applying a parameter map
2009-08-09 11:21 28463The error occurred while applyi ... -
struts2 标签截取字符串
2009-08-02 11:16 2410struts2 标签截取字符串,有点强大哦 <s:pr ... -
ibatis 双向关联不能实现
2009-08-01 11:07 1132最近用ibatis做持久层框架,好不容易吧关系给配置好了,又出 ... -
hibernate ibatis
2009-08-01 11:02 1404一。 inverse = ? ... -
struts2 selectedIndex 使用
2009-07-30 17:57 1472var ss = document.selectform ... -
struts2 类似 struts1的很低级问题
2009-07-30 15:25 1217本想通过超链接传递参数,但是网页地址栏会暴漏参数信息,于是选择 ... -
struts2 标签小体会
2009-07-30 15:16 1128<s:iterator id="m" ... -
ibatis 简单实例
2009-07-20 19:01 1610在 iBATIS SQL Maps 的世界 ... -
ibatis javaBean 书写问题
2009-07-18 15:55 1336There is no WRITEABLE property ... -
dwr spring集成
2009-07-14 18:55 2199最近用dwr做了个登陆验证的例子,可真是几经波折呀(程序很简单 ... -
spring拦截器
2009-07-02 11:31 1625今天在SSH中用到spring拦 ... -
Spring学习笔记之Bean基本管理(BeanFactory,ApplicationContext
2009-06-17 15:56 1090Spring2中: BeanFactory接口定义了6种方法 ... -
Beans, BeanFactory和ApplicationContext
2009-06-17 15:52 1095在Spring中,两个最基本 ... -
struts2.0+spring2.0+ibatis
2009-06-16 23:13 1852首页 新闻 论坛 博客 招聘 更多 ▼ 问答 知识库 ...
相关推荐
在这个特定的案例中,我们关注的是"Ibatis Spring Struts"的整合。这三个框架分别是:Ibatis(一个轻量级的持久层框架),Spring(一个全面的企业级应用开发框架),以及Struts(一个用于构建MVC(Model-View-...
### ibatis与Spring框架整合详解 #### 一、ibatis简介 ibatis是一个开源的、基于Java的持久层框架,它提供了SQL映射的方式来进行数据库访问。与Hibernate等其他ORM框架相比,ibatis更加轻量级,对于那些只需要简单...
### Spring对IBatis的整合 #### 一、Spring与IBatis整合概述 Spring框架与IBatis(现称为MyBatis)的整合为开发者提供了一种更简洁、更强大的数据库访问方式。Spring通过其内置的支持机制极大地简化了原有的IBatis...
分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...
在Java Web开发中,Spring和iBatis是两个非常重要的框架。Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等特性,而iBatis则是一个优秀的持久层框架,它将SQL语句与Java代码分离,...
分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...
本篇文章将详细探讨如何将Ibatis与Spring进行整合开发,并提供一个实际的例子。 Ibatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在配置文件中,提供了灵活的映射机制,避免了ORM框架的过度抽象。而...
"ibatis+spring+struts2 整合开发例子"就是一个典型的Java Web应用集成开发案例,旨在帮助开发者理解和掌握这三大框架的协同工作原理。接下来,我们将详细讨论这三个组件以及它们的整合过程。 Ibatis是一个轻量级的...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们各自承担着不同的职责。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理用户的请求并展示结果;Spring则是一个全面的后端...
Spring 3.2 与 iBatis 的整合是Java企业级开发中常见的一种技术组合,它结合了Spring的依赖注入和事务管理能力以及iBatis的SQL映射框架的灵活性。这种整合允许开发者将业务逻辑与数据访问层解耦,提高了代码的可维护...
"Ibatis+Spring整合"是指将这两个框架集成到同一个项目中,以利用它们的优势互补,实现更高效、更灵活的数据访问层。下面我们将详细探讨这个整合过程中的关键知识点。 首先,集成Ibatis和Spring的第一步是引入相关...
在整合iBATIS和Spring的过程中,主要目标是利用Spring的IOC(Inversion of Control)容器来管理和协调数据访问层(DAO)以及事务处理,同时利用iBATIS作为SQL映射框架,提供灵活的数据库操作。以下将详细阐述整合的...
本文将深入探讨如何将Ibatis、Spring和SpringMVC这三个流行的Java技术进行整合,以实现一个完整的Web应用解决方案。 首先,Ibatis是一个轻量级的持久层框架,它解决了JDBC繁琐的数据访问代码,提供了一种SQL映射...
Struts2+iBATIS+Spring整合是Java Web开发中一种常见的技术栈组合,这三种框架协同工作,可以构建出高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,管理前端...
Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...