0 0

Spring和Ibatis整合时出错了5

最近在自学ibatis,在网上搜索了一些视频资料,今天准备来整一个Spring+ibatis,但是这个问题现在把我难住了。报错信息如下:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'empservice' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'sqlMapClientTemplate' of bean class [com.inventec.service.EmployeeService]: Bean property 'sqlMapClientTemplate' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
org.springframework.beans.NotWritablePropertyException: Invalid property 'sqlMapClientTemplate' of bean class [com.inventec.service.EmployeeService]: Bean property 'sqlMapClientTemplate' is not writable or has an invalid setter method: Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:670)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:572)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:737)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:764)
at org.springframework.beans.BeanWrapperImpl.setPropertyValues(BeanWrapperImpl.java:753)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1057)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:857)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:378)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:87)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:72)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:63)
at com.inventec.service.Test.main(Test.java:10)


我的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>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></value>
</property>
</bean>

<!--根据dataSource和configLocation创建一个SqlMapClient-->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>SqlMapConfig.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="empservice" class="com.inventec.service.EmployeeService">
<property name="sqlMapClientTemplate">
<ref bean="sqlMapClientTemplate" />
</property>
</bean>


</beans>

EmployeeService.java是这样的:
package com.inventec.service;

import java.util.List;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import com.inventec.bean.Account;
import com.inventec.bean.Employee;

public class EmployeeService {
private SqlMapClientTemplate sqlMap;

public SqlMapClientTemplate getSqlMap() {
return sqlMap;
}

public void setSqlMap(SqlMapClientTemplate sqlMap) {
this.sqlMap = sqlMap;
}

public Employee getOne() {
Employee emp = null;

emp = (Employee) sqlMap.queryForObject("getOne", 1);
System.out.println(emp.getEmpName() + " " + emp.getEmail());

return emp;

}

public List getSomeData() {
List list = null;
list = sqlMap.queryForList("getAll", 1);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
return list;

}

public Account getOneAccount() {
Account acc = null;
acc = (Account) sqlMap.queryForObject("getOneAcc", 2);
System.out.println(acc.getUserName()+" pwd:"+acc.getPassWord());

return acc;
}


}

确定不是sqlMapconfig.xml和其他资源文件的问题,各位帮帮忙啦!小妹先谢了!!!
问题补充:
在Test.java中是这样的来执行的:
public class Test extends EmployeeService {

public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
EmployeeService service = (EmployeeService) context
.getBean("empservice");
service.getOne();

}

}
2009年1月04日 18:37

2个答案 按时间排序 按投票排序

0 0

采纳的答案

<!--将上面的模版类织入到我们的DAO对象中-->
<bean id="empservice" class="com.inventec.service.EmployeeService">
  <property name="sqlMapClientTemplate">
    <ref bean="sqlMapClientTemplate" />
  </property>
</bean>

上面的配置有问题,按照这样的写法,EmployeeService这个类里应该有"sqlMapClientTemplate”这个属性,但我看了EmployeeService.java,没找到,这当然会报错,应该改成以下的写法:
<bean id="empservice" class="com.inventec.service.EmployeeService">
  <property name="sqlMap">
    <ref bean="sqlMapClientTemplate" />
  </property>
</bean>
,也就是把<property name="sqlMapClientTemplate">改成<property name="sqlMap">

2009年1月04日 23:24
0 0

将EmployeeService.java中的property:sqlMap改名为sqlMapClientTemplate,相应的get和set方法也修改

2009年1月06日 14:13

相关推荐

    spring+ibatis所需要的jar包

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

    SPRING JAVA IBATIS文档

    《SPRING JAVA IBATIS文档》是一份详细阐述Spring、Java和iBATIS集成的参考资料,旨在帮助开发者理解和掌握这三大技术在企业级应用开发中的整合与应用。Spring作为一个全面的开源框架,提供了依赖注入(DI)和面向切...

    Spring MVC Ibatis Bean 根据mysql数据表——代码生成工具

    总的来说,Spring MVC Ibatis Bean 根据mysql数据表的代码生成工具是提升开发效率、降低维护成本的有效手段,它整合了Spring MVC的控制层、Ibatis的数据访问层以及Java Bean的业务实体,帮助开发者快速构建基于MySQL...

    ibatis_spring整合Demo

    通过这个"ibatis_spring整合Demo",我们可以看到Ibatis与Spring的整合使得数据库操作更加简洁,同时利用了Spring的IoC和AOP特性,提高了代码的可测试性和可维护性。在实际项目中,这样的整合方式可以大大简化开发...

    Struts2+Spring+ibatis框架搭建

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的动作控制、依赖注入和数据库操作。本篇将详细阐述如何整合这三大框架,构建一个高效、灵活的Web应用。 **Struts2框架**: Struts2...

    struts spring ibatis extjs 实例

    Struts、Spring、iBatis 和 ExtJS 是四个在IT行业中广泛应用的开源框架和技术,它们在构建企业级Java Web应用程序时发挥着重要作用。这个实例由Atanas Neshkov创建,旨在展示这些技术如何协同工作,提供高效且用户...

    SSI, IBatis+struts2+spring+mysql整合增删改查

    在IT行业中,构建一个完整的Web应用程序常常涉及到多个技术框架的集成。"SSI, IBatis+struts2+spring+mysql整合增...在实际开发中,这种整合方式可以帮助团队提高开发效率,降低出错概率,同时也方便后期的扩展和升级。

    配置ibatis3.0时,发生的小错误

    6. **资源加载问题**:iBatis尝试加载Mapper XML文件时可能会出错。如果文件位于类路径下,确保文件路径正确。如果是使用类路径外的文件,可能需要调整`mybatis-configuration`的`configuration`元素的`map-...

    springMVC-ibatis2

    查看源码有助于理解Spring MVC和iBatis如何协同工作,以及如何配置和使用它们。通过阅读源码,我们可以学习到如何定制拦截器、AOP切面、异常处理等高级特性。 标签 "工具" 指出这可能涉及到一些辅助工具或者最佳...

    ibatis架包

    除此之外,压缩包中还有一个名为`ibatis.jar`的文件,这可能是一个整合后的Ibatis主库,包含了上述三个jar文件的功能,提供了一站式的Ibatis框架服务,便于开发者导入和使用。 Ibatis的主要特点包括: - 易于学习:...

    ibatis 开发指南+操作过程+核心配置文件

    本文将深入探讨`ibatis`的开发指南,包括其使用原因、与JDBC和Hibernate的对比,以及如何与Spring框架集成。 首先,我们来了解为什么选择`ibatis`。相比传统的JDBC,`ibatis`消除了大量手动设置参数和获取结果集的...

    springMVC+ibatis+jstl+easyui+comet4j

    EasyUI组件与后端的Spring MVC和iBatis可以通过AJAX进行通信,实现前后端的数据交互。 **Comet4j** Comet4j是一个基于长轮询和HTTP连接保持的实时通信框架。在传统的HTTP请求/响应模型中,服务器无法主动向客户端推...

    Spring框架

    整合Spring和Hibernate,我们可以利用Spring的DI来管理Hibernate的SessionFactory和Session,从而实现更高效的数据访问。 1. **配置SessionFactory**:在Spring配置文件中,我们需要定义一个SessionFactory的bean,...

    跟我学spring3(8-13).pdf

    - **iBATIS集成**:Spring与iBATIS结合,可以方便地管理SQL Maps和Data Access Objects(DAOs),并提供事务管理。 - **JPA集成**:Spring支持Java Persistence API(JPA),提供了透明的事务管理和实体管理功能,...

    Spring Boot整合tk.mybatis代码实例

    本文主要介绍了Spring Boot如何整合tk.mybatis的代码实例,旨在帮助读者更好地理解和应用tk.mybatis框架。下面将对本文中涉及的知识点进行详细的解释和分析。 1. tk.mybatis简介 tk.mybatis是一个基于MyBatis框架...

    SSI框架整合学习

    3. **利用成熟工具**:如Spring Boot等自动化配置工具可以帮助简化配置过程,减少出错几率。 4. **加强文档记录**:对于复杂的配置细节和特殊需求,应及时做好文档记录,便于后续维护和团队协作。 综上所述,虽然...

    springmybatis

    以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经...

    Spring-MF-ORM

    标题“Spring-MF-ORM”暗示我们关注的是Spring框架与对象关系映射(ORM)的结合,特别是关于在Java环境中如何使用Spring...这个项目或模块可能包含示例代码、配置文件和文档,帮助开发者理解和实践Spring与ORM的整合。

    IT技术文章示例

    Flex与Spring、Ibatis的整合,可以构建出高效、灵活的企业级应用。Flex作为前端界面,通过BlazeDS与后端通信;Spring管理业务逻辑和服务对象;Ibatis处理数据库操作。 ### 12. Flex与Java数据库操作 Flex可以与...

Global site tag (gtag.js) - Google Analytics