回忆已成` 空白 2019-07-30 16:39 采纳率: 40%
浏览 176

mybatis整合sping错误。

动态代理时报错

<context:property-placeholder location="db.properties" />

    <!-- dataSource 配置c3p0连接池 -->
    <bean name="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <!-- 配置mybatis sqlSessionFactory -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 配置数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 告诉spring mybatis的核心配置文件路径 -->
        <property name="configLocation" value="classpath:SqlMapConfig.xml" />
    </bean>

    <!-- userdao -->
    <bean id="userDaoImpl" class="com.sikiedu.dao.UserDaoImpl">
    <!-- 将工厂注入到dao的父类sqlSessionFactory -->
    <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
    </bean>

    <!-- mapper动态代理开发 -->
    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <!-- 注入sqlSessionFactory-->
        <property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
        <!-- 配置接口 -->
        <property name="mapperInterface" value="com.sikiedu.mapper.UserMapper"/>
    </bean>
<!-- 类型别名 -->
    <typeAliases>
        <!-- 以对象为别名,大小写不限,推荐使用小写 -->
        <!--<typeAlias type="com.sikiedu.bean.User" alias="user" /> -->
        <!-- package包的形式来配置别名 包的形式会扫描主包及子包下的所有文件 -->
        <package name="com.sikiedu.bean" />
    </typeAliases>

    <mappers>
        <package name="com.sikiedu.mapper"/>
    </mappers>


<!--id查询 #{}占位符 自带单引号'' parameterType参数类型 resultType 返回值类型 -->
resultType="user">
select * from user where u_id=#{id}

@Test
    public void DaoTest() {
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDaoImpl userDao = ac.getBean(UserDaoImpl.class);
        User user = userDao.getUserById(1);
        System.out.println(user);
    }

@Override
public User getUserById(Integer id) {

    SqlSession session=getSqlSession();
    // 操作数据库
    // 第一个参数是要操作的SQL语句 ,第二个参数是SQL语句的参数
    return session.selectOne("UserMapper.selectUserById", id);

}
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for UserMapper.selectUserById
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for UserMapper.selectUserById
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
    at com.sun.proxy.$Proxy9.selectOne(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
    at com.sikiedu.dao.UserDaoImpl.getUserById(UserDaoImpl.java:17)
    at com.sikiedu.test.UserDaoTest.DaoTest(UserDaoTest.java:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 

图片说明
还有一个数据驱动包mysql-connector-java-8.0.16.jar

  • 写回答

1条回答 默认 最新

  • 阳光下的小草 2019-08-05 17:21
    关注

    java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for UserMapper.selectUserById

    对应的mapper.xml文件中没有找到UserMapper.selectUserById方法,检查一下映射的全限定名和方法名称是否正确

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器