Spring3+Struts2+Hibernate4+Mybatis整合报错,求大神解救!!!

时间:2021-04-02 05:09:55
[org.springframework.web.context.ContextLoader]Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext-persistence.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'sqlSessionFactoryBeanName' of bean class [org.mybatis.spring.mapper.MapperScannerConfigurer]: Bean property 'sqlSessionFactoryBeanName' 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.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1396)

15 个解决方案

#1


. Does the parameter type of the setter match the return type of the getter?

你看看你 的set/get 方法。

#2


  public void setSqlSessionFactoryBeanName(String sqlSessionFactoryName) {
    this.sqlSessionFactoryBeanName = sqlSessionFactoryName;
  }

#3


 <!-- Mybatis 的 session factory 配置 -->  
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <property name="configLocation" value="classpath:mybatis/sqlmap-config.xml" />  
    </bean> 
    
    <!-- 扫描  mapper 接口 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.lscms.sqlmapper" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>  
    </bean>  

#4


Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用

#5


Hibernate为什么与MyBatis一起使用呢?有点奇怪。

#6


引用 4 楼 juwuhen 的回复:
Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。

#7


引用 5 楼 Inhibitory 的回复:
Hibernate为什么与MyBatis一起使用呢?有点奇怪。


整合起来用,很爽的,很灵活,mybatis做复杂查询很爽,hibernate做简单查询,和增删改。各有各的优点,各有各的好处,整合起来就是为了充分发挥它们的优点,不然做复杂查询hibernate很恶心的。

#8


引用 7 楼 zengzengdesign 的回复:
Quote: 引用 5 楼 Inhibitory 的回复:

Hibernate为什么与MyBatis一起使用呢?有点奇怪。


整合起来用,很爽的,很灵活,mybatis做复杂查询很爽,hibernate做简单查询,和增删改。各有各的优点,各有各的好处,整合起来就是为了充分发挥它们的优点,不然做复杂查询hibernate很恶心的。

呵呵,没这么折腾过

#9


hibernate做复杂查询很恶心这点我知道,难道iBATIS做增删改不好吗,为什么不直接用iBATIS做所有?

#10


持久层框架基本只会出现一个,mybatis就足够了,想要做到hibernate哪些save(Entity) update(Entity) delete(Entity)的这些功能自己改造下mybatis就可以了。

#11


引用 9 楼 u010541735 的回复:
hibernate做复杂查询很恶心这点我知道,难道iBATIS做增删改不好吗,为什么不直接用iBATIS做所有?

Mybatis做增删改也很好,实际上哪一个都很好,只是个人想把他们结合起来使用,纯属闲得无聊啊,哈哈。。。

#12


引用 10 楼 suciver 的回复:
持久层框架基本只会出现一个,mybatis就足够了,想要做到hibernate哪些save(Entity) update(Entity) delete(Entity)的这些功能自己改造下mybatis就可以了。

嗯嗯  是的  这个方法也很不错啊,完了可以尝试一下,这个整合只是个人喜好问题,不过还好,整合成功了,用起来个人感觉不错。

#13


sqlSessionFactoryBeanName这个方法没set方法

#14


引用 6 楼 zengzengdesign 的回复:
Quote: 引用 4 楼 juwuhen 的回复:

Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。



问题在那里啊,我现在碰到一样的问题

#15


引用 14 楼 zZoTwwToZz 的回复:
Quote: 引用 6 楼 zengzengdesign 的回复:

Quote: 引用 4 楼 juwuhen 的回复:

Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。



问题在那里啊,我现在碰到一样的问题


我的问题是出在没有把mapper注入到service中引发的错误。小问题,个人疏忽大意了。

#1


. Does the parameter type of the setter match the return type of the getter?

你看看你 的set/get 方法。

#2


  public void setSqlSessionFactoryBeanName(String sqlSessionFactoryName) {
    this.sqlSessionFactoryBeanName = sqlSessionFactoryName;
  }

#3


 <!-- Mybatis 的 session factory 配置 -->  
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <property name="configLocation" value="classpath:mybatis/sqlmap-config.xml" />  
    </bean> 
    
    <!-- 扫描  mapper 接口 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.lscms.sqlmapper" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>  
    </bean>  

#4


Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用

#5


Hibernate为什么与MyBatis一起使用呢?有点奇怪。

#6


引用 4 楼 juwuhen 的回复:
Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。

#7


引用 5 楼 Inhibitory 的回复:
Hibernate为什么与MyBatis一起使用呢?有点奇怪。


整合起来用,很爽的,很灵活,mybatis做复杂查询很爽,hibernate做简单查询,和增删改。各有各的优点,各有各的好处,整合起来就是为了充分发挥它们的优点,不然做复杂查询hibernate很恶心的。

#8


引用 7 楼 zengzengdesign 的回复:
Quote: 引用 5 楼 Inhibitory 的回复:

Hibernate为什么与MyBatis一起使用呢?有点奇怪。


整合起来用,很爽的,很灵活,mybatis做复杂查询很爽,hibernate做简单查询,和增删改。各有各的优点,各有各的好处,整合起来就是为了充分发挥它们的优点,不然做复杂查询hibernate很恶心的。

呵呵,没这么折腾过

#9


hibernate做复杂查询很恶心这点我知道,难道iBATIS做增删改不好吗,为什么不直接用iBATIS做所有?

#10


持久层框架基本只会出现一个,mybatis就足够了,想要做到hibernate哪些save(Entity) update(Entity) delete(Entity)的这些功能自己改造下mybatis就可以了。

#11


引用 9 楼 u010541735 的回复:
hibernate做复杂查询很恶心这点我知道,难道iBATIS做增删改不好吗,为什么不直接用iBATIS做所有?

Mybatis做增删改也很好,实际上哪一个都很好,只是个人想把他们结合起来使用,纯属闲得无聊啊,哈哈。。。

#12


引用 10 楼 suciver 的回复:
持久层框架基本只会出现一个,mybatis就足够了,想要做到hibernate哪些save(Entity) update(Entity) delete(Entity)的这些功能自己改造下mybatis就可以了。

嗯嗯  是的  这个方法也很不错啊,完了可以尝试一下,这个整合只是个人喜好问题,不过还好,整合成功了,用起来个人感觉不错。

#13


sqlSessionFactoryBeanName这个方法没set方法

#14


引用 6 楼 zengzengdesign 的回复:
Quote: 引用 4 楼 juwuhen 的回复:

Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。



问题在那里啊,我现在碰到一样的问题

#15


引用 14 楼 zZoTwwToZz 的回复:
Quote: 引用 6 楼 zengzengdesign 的回复:

Quote: 引用 4 楼 juwuhen 的回复:

Mybatis没必要和Hibernate一起用吧,大家都是持久层,你的sessionFactory到底用的哪个啊,注意别混用


是很有用的,很多大的项目都是两个整合一起用的,hibernate做点简单查询,mybatis做复杂查询,很爽的。
问题已经解决了,是自己大意了。



问题在那里啊,我现在碰到一样的问题


我的问题是出在没有把mapper注入到service中引发的错误。小问题,个人疏忽大意了。