springmvc,spring整合mybatis时遇到问题,tomcat启动没有抛异常,但是去执行某一个操作时抛出异常

J2EE 码拜 10年前 (2015-05-10) 1261次浏览 0个评论

测试spring整合mybatis没有问题,但是一加上springmvc就出现问题
具体异常:
HTTP Status 500 – Request processing failed; nested exception is java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for henan.huel.ssm.mapper.StudentMapper.findById

10分
springmvc没有关系吧?
你的StudentMapper里,有findById方法么?
20分
henan.huel.ssm.mapper.StudentMapper.findById  检查一下这个方法的返回值的映射有没有配对
10分
参考。
引用 1 楼 weightman2008 的回复:

springmvc没有关系吧?
你的StudentMapper里,有findById方法么?

有的
StudentMapper:
public interface StudentMapper {

public void save(Student student);

public void delete(Integer id);

public void update(Student student);

public Student findById(Integer id);

public List<Student> findAll();

}
studentMapper.xml:
<mapper namespace=”henan.huel.ssm.mapper.StudentMapper”> 

<insert id=”save”  parameterType=”Student”>
insert into student(name, sex, age, weight, height) 
values (#{name},#{sex},#{age},#{weight},#{height})
</insert>

<delete id=”delete” parameterType=”int”>
delete from student where id=#{id}
</delete>

<update id=”update” parameterType=”Student”>
update student set name=#{name}, sex=#{sex}, age=#{age}, weight=#{weight}, height=#{height}
where id=#{id}
</update>

<select id=”findById” parameterType=”int” resultType=”Student”>
select * from student where id=#{id}
</select>

<select id=”findAll” resultType=”Student”>
select * from student
</select>

</mapper>

引用 3 楼 rui888 的回复:

参考。

不是,我的测试能通过,我想应该只是配置的原因

引用 2 楼 xinzhifan4 的回复:

henan.huel.ssm.mapper.StudentMapper.findById  检查一下这个方法的返回值的映射有没有配对

你说的是不是这样?
<bean id=”sqlSessionFactory” 
class=”org.mybatis.spring.SqlSessionFactoryBean”>
<property name=”dataSource” ref=”dataSource”></property>
<property name=”typeAliasesPackage” value=”henan.huel.ssm.entity”></property>
<property name=”mapperLocations”>
<value>classpath:henan/huel/ssm/mapper/*.xml</value>
</property>

</bean>
这样就没有报异常了。还有一个问题。就是问什么要加
<property name=”mapperLocations”>
<value>classpath:henan/huel/ssm/mapper/*.xml</value>
</property>

没有加测试spring集成mybatis是也没有错,集成springmvc是就报错,不是说,
<bean class=”org.mybatis.spring.mapper.MapperScannerConfigurer”>
<property name=”basePackage” value=”henan.huel.ssm.mapper”></property>
<property name=”sqlSessionFactory” ref=”sqlSessionFactory”></property>
</bean>
中的basePackage 自动能扫描dao和对应的xml文件吗?

大概是加载顺序不同吧。
sqlSessionFactory被提前实例化了。
由于测试mybatis与spring集成能完成基本操作,加入springmvc后tomcat启动无误,但是执行具体操作是出现上面的异常,
解决方案是:添加映射文件所在位置及名称(即红色标注部分)
<bean id=”sqlSessionFactory” 
class=”org.mybatis.spring.SqlSessionFactoryBean”>
<property name=”dataSource” ref=”dataSource”></property>
<property name=”typeAliasesPackage” value=”henan.huel.ssm.entity”></property>
<property name=”mapperLocations”>
<value>classpath:henan/huel/ssm/mapper/*.xml</value>
</property>

</bean>

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明springmvc,spring整合mybatis时遇到问题,tomcat启动没有抛异常,但是去执行某一个操作时抛出异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!