javascript
BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...
重構代碼,方法拋出異常:BindingException: Invalid bound statement (not found)
提示信息很明顯:mybatis沒有提供某方法
先不解釋問題原因和排查過程,因為使用SpringBoot集成Mybatis,主要配置點如下:
MyBatis 的真正強大在于它的映射器Mapper,它是開發者用于綁定映射語句(sql)的接口,而映射語句常規兩種寫法:annotation 和 xml 配置;
如果單純使用annotation的方式,最主要是關心mapper java文件;
但是我們推薦sql配置在xml中,強大的邏輯判斷、字段映射、sql復用...
1、mapper xml文件的掃描
如果使用xml配置sql,需要告訴SpringBoot掃描這些xml,常用以下兩種配置方法
方法一:配置文件指定掃描路徑(推薦)
1 mybatis: 2 mapper-locations: classpath:mapping/*.xml #注意:一定要對應mapper映射xml文件的所在路徑 3 type-aliases-package: com.winter.model # 注意:對應實體類的路徑?
方法二:配置 SqlSessionFactory
Mybatis萬能的SqlSessionFactory接口(還有一個SqlSession接口,他倆是mybatis的核心),直接在他里面指定xml路徑
@Autowired @Bean public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource,PageHelper pageHelper) throws IOException {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);/** 添加mapper 掃描路徑 */PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + "/sql/*.xml";sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath));/** 設置datasource */sqlSessionFactoryBean.setDataSource(dataSource);sqlSessionFactoryBean.setPlugins(new Interceptor[] { pageHelper });return sqlSessionFactoryBean; }?
2、mapper接口的掃描
mapper接口是真正的java接口,使用動態代理,雖然只是接口定義,卻實現了真正的sql執行、響應結果映射封裝等,需要告訴SpringBoot掃描這些mapper接口,常用以下兩種配置方法
方法一:接口上添加注解(推薦)
@Mapper public interface PermissionMapper {... 略 ... }?
方法二:指定掃描包路徑
@MapperScan("com.XXX.XXX.services.mapper")?
總之,SpringBoot中注意xml和mapper接口的掃描配置。
?
出現:BindingException: Invalid bound statement (not found) 這種異常,問題排查步驟:
1、先確認如上兩個配置是否正常;
2、檢查mapper文件,方法是否存在
3、檢查xml文件,id=方法名 的sql是否存在,該xml對應的mapper接口是否存在
?
注意:
如果sql通過annotation注解寫在mapper接口上,同時也使用了xml的方式,注意id不能重復,即使參數完全不同,id也必須不同(mybatis的xml里面可沒有override的概念)
相同的id只能存在不同的namespace里面
?
轉載于:https://www.cnblogs.com/huahua035/p/10345382.html
總結
以上是生活随笔為你收集整理的BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA Bean和XML之间的相互转换
- 下一篇: [Swift]LeetCode468.