日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...

發(fā)布時間:2025/3/21 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

重構(gòu)代碼,方法拋出異常:BindingException: Invalid bound statement (not found)

提示信息很明顯:mybatis沒有提供某方法

先不解釋問題原因和排查過程,因為使用SpringBoot集成Mybatis,主要配置點如下:

MyBatis 的真正強大在于它的映射器Mapper,它是開發(fā)者用于綁定映射語句(sql)的接口,而映射語句常規(guī)兩種寫法:annotation 和 xml 配置;

如果單純使用annotation的方式,最主要是關(guān)心mapper java文件;

但是我們推薦sql配置在xml中,強大的邏輯判斷、字段映射、sql復(fù)用...

1、mapper xml文件的掃描

如果使用xml配置sql,需要告訴SpringBoot掃描這些xml,常用以下兩種配置方法

方法一:配置文件指定掃描路徑(推薦

1 mybatis: 2 mapper-locations: classpath:mapping/*.xml #注意:一定要對應(yīng)mapper映射xml文件的所在路徑 3 type-aliases-package: com.winter.model # 注意:對應(yīng)實體類的路徑

?

方法二:配置 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));/** 設(shè)置datasource */sqlSessionFactoryBean.setDataSource(dataSource);sqlSessionFactoryBean.setPlugins(new Interceptor[] { pageHelper });return sqlSessionFactoryBean; }

?

2、mapper接口的掃描

mapper接口是真正的java接口,使用動態(tài)代理,雖然只是接口定義,卻實現(xiàn)了真正的sql執(zhí)行、響應(yīng)結(jié)果映射封裝等,需要告訴SpringBoot掃描這些mapper接口,常用以下兩種配置方法

方法一:接口上添加注解(推薦

@Mapper public interface PermissionMapper {... 略 ... }

?

方法二:指定掃描包路徑

@MapperScan("com.XXX.XXX.services.mapper")

?

總之,SpringBoot中注意xml和mapper接口的掃描配置。

?

出現(xiàn):BindingException: Invalid bound statement (not found) 這種異常,問題排查步驟:

1、先確認如上兩個配置是否正常;

2、檢查mapper文件,方法是否存在

3、檢查xml文件,id=方法名 的sql是否存在,該xml對應(yīng)的mapper接口是否存在

?

注意:

如果sql通過annotation注解寫在mapper接口上,同時也使用了xml的方式,注意id不能重復(fù),即使參數(shù)完全不同,id也必須不同(mybatis的xml里面可沒有override的概念)

相同的id只能存在不同的namespace里面

?

轉(zhuǎn)載于:https://www.cnblogs.com/huahua035/p/10345382.html

總結(jié)

以上是生活随笔為你收集整理的BindingException: Invalid bound statement (not found)问题排查:SpringBoot集成Mybatis重点分析...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。