在idea中的springboot集成mybatis时遇到的问题

目录

问题

分析

总结

一、两个注解

二、一个配置properties

 


问题

使用了mybatis的generator自动成成了反向工程代码,dao,model,以及映射xml文件。在调用接口时一直报如下错误

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ccb.market.dao.UserMapper.selectByPrimaryKey
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225) ~[mybatis-3.4.5.jar:3.4.5]
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48) ~[mybatis-3.4.5.jar:3.4.5]
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) ~

分析

根据报错内容Invalid bound statement (not found): com.ccb.market.dao.UserMapper.selectByPrimaryKey初步分析程序在运行到dao层是没有找到对应的xml映射文件,那没找到的原因是什么呢,经过一波搜索。得出结论xml文件在程序运行时没有扫描到,也就是说三种原因

1、编译文件中没有这个xml文件

2、dao层的文件与映射文件xml名称不匹配

3、路径没有匹配上。

最后经过一番尝试定位出是applicaition.protites中缺少如下配置。这个配置很重要,这个配置很重要,这个配置很重要

#指定mapper.xml的位置,如果mapper.xml和接口类在一个包下就不需要指定了
mybatis.mapper-locations=classpath:com/ccb/market/mapper/*.xml

总结

springboot在集成mybatis时候依次满足如下两个条件;

一、两个注解

1、注解@SpringBootApplication

//配置要扫描的包目录
@SpringBootApplication(scanBasePackages = "com.ccb.market")
  相当于
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
	<context:component-scan base-package="com.ccb.market" />
2、注解@MapperScan("com.ccb.market.dao")//配置要扫描dao层的目录
//配置要扫描dao层的目录
@MapperScan("com.ccb.market.dao")

相当于

<!-- myBatis文件 -->
	<bean id="sqlSessionFactory" class="core.common.springmvc.PackagesSqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:config/mybatis-config.xml"/>
		<property name="mapperLocations" value="classpath:com/ccb/market/mapper/*.xml" />
        <property name="typeAliasesPackage" value="com.**.model" />
	</bean>

二、一个配置properties

#指定mapper.xml的位置,如果mapper.xml和接口类在一个包下就不需要指定了
mybatis.mapper-locations=classpath:com/ccb/market/mapper/*.xml

 

猜你喜欢

转载自blog.csdn.net/qq_34050399/article/details/114884912
今日推荐