mybatis-plus的BaseMapper調(diào)用報(bào)錯(cuò):Invalid bound statement

1使用springboot整合mybatis-plus后,調(diào)用自定義的方法正常,調(diào)用BaseMapper中自帶的方法報(bào)錯(cuò)如下:

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.linose.uutm.mapper.receiveMapper.selectList(receiveQueryWrapper);

at org.apache.ibatis.binding.MapperMethod$SqlCommand.(MapperMethod.java:227) ~[mybatis-3.4.6.jar:3.4.6]

at org.apache.ibatis.binding.MapperMethod.(MapperMethod.java:49) ~[mybatis-3.4.6.jar:3.4.6]

at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) ~[mybatis-3.4.6.jar:3.4.6]

at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58) ~[mybatis-3.4.6.jar:3.4.6]

at com.sun.proxy.$Proxy70.selectOne(Unknown Source) ~[na:na]

at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.getOne(ServiceImpl.java:259) ~[mybatis-plus-extension-3.1.1.jar:3.1.1]

at com.baomidou.mybatisplus.extension.service.IService.getOne(IService.java:192) ~[mybatis-plus-extension-3.1.1.jar:3.1.1]

2檢查:

(1)檢查是不是引入 jar 沖突

<dependency>

? ? <groupId>com.baomidou</groupId>

? ? <artifactId>mybatis-plus</artifactId>

? ? <version>2.1.9</version>

</dependency>

<dependency>

? ? <groupId>com.baomidou</groupId>

? ? <artifactId>mybatis-plus-boot-starter</artifactId>

? ? <version>3.1.2</version>

</dependency>

<dependency>

? ? <groupId>com.baomidou</groupId>

? ? <artifactId>mybatis-plus-annotation</artifactId>

? ? <version>3.1.2</version>

</dependency>

<dependency>

? ? <groupId>com.baomidou</groupId>

? ? <artifactId>mybatis-plus-extension</artifactId>

? ? <version>3.1.2</version>

</dependency>

(2)檢查掃描以及namespace對(duì)應(yīng)關(guān)系

檢查xml文件所在的package名稱是否和interface對(duì)應(yīng)的package名稱一一對(duì)應(yīng)

檢查xml文件的namespace是否和xml文件的package名稱一一對(duì)應(yīng)

檢查函數(shù)名稱能否對(duì)應(yīng)上

去掉xml文件中的中文注釋

(3)檢查是否都已經(jīng)編譯到相應(yīng)路徑

<build>

<resources>

<resource>

<directory>src/main/java</directory>

<includes>

<include>**/*.xml</include>

</includes>

</resource>

<resource>

<directory>src/main/resources</directory>

</resource>

</resources>

</build>

(4)發(fā)現(xiàn)上述都沒問題

看bug發(fā)現(xiàn) SqlSessionFactory使用原生的,應(yīng)該使用MybatisSqlSessionFactory

解決方法:將mybatis的sqlSessionFactory替換成mybatis-plusd的MybatisSqlSessionFactoryBean,添加配置類MybatisPlusConfig?

package com.linose.uutm.config;

import com.baomidou.mybatisplus.core.MybatisConfiguration;

import com.baomidou.mybatisplus.core.MybatisXMLLanguageDriver;

import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;

import org.apache.ibatis.mapping.DatabaseIdProvider;

import org.apache.ibatis.plugin.Interceptor;

import org.mybatis.spring.boot.autoconfigure.MybatisProperties;

import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.DefaultResourceLoader;

import org.springframework.core.io.ResourceLoader;

import org.springframework.util.StringUtils;

import javax.sql.DataSource;

@Configuration

public class MybatisPlusConfig {

? ? @Autowired

? ? private DataSource dataSource;

? ? @Autowired

? ? private MybatisProperties properties;

? ? @Autowired

? ? private ResourceLoader resourceLoader = new DefaultResourceLoader();

? ? @Autowired(required = false)

? ? private Interceptor[] interceptors;

? ? @Autowired(required = false)

? ? private DatabaseIdProvider databaseIdProvider;

? ? /**

? ? *? mybatis-plus分頁插件

? ? */

? ? @Bean

? ? public PaginationInterceptor paginationInterceptor() {

? ? ? ? PaginationInterceptor page = new PaginationInterceptor();

? ? ? ? page.setDialectType("mysql");

? ? ? ? return page;

? ? }

? ? /**

? ? * 這里全部使用mybatis-autoconfigure 已經(jīng)自動(dòng)加載的資源。不手動(dòng)指定

? ? * 配置文件和mybatis-boot的配置文件同步

? ? * @return

? ? */

? ? @Bean

? ? public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {

? ? ? ? MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();

? ? ? ? mybatisPlus.setDataSource(dataSource);

? ? ? ? mybatisPlus.setVfs(SpringBootVFS.class);

? ? ? ? if (StringUtils.hasText(this.properties.getConfigLocation())) {

? ? ? ? ? ? mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));

? ? ? ? }

? ? ? ? if (!ObjectUtils.isEmpty(this.interceptors)) {

? ? ? ? ? ? mybatisPlus.setPlugins(this.interceptors);

? ? ? ? }

? ? ? ? MybatisConfiguration mc = new MybatisConfiguration();

? ? ? ? mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);

? ? ? ? //數(shù)據(jù)庫字段設(shè)計(jì)為駝峰命名,默認(rèn)開啟的駝峰轉(zhuǎn)下劃線會(huì)報(bào)錯(cuò)字段找不到

? ? ? ? mc.setMapUnderscoreToCamelCase(true);

? ? ? ? mybatisPlus.setConfiguration(mc);

? ? ? ? if (this.databaseIdProvider != null) {

? ? ? ? ? ? mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);

? ? ? ? }

? ? ? ? if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {

? ? ? ? ? ? mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());

? ? ? ? }

? ? ? ? if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {

? ? ? ? ? ? mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());

? ? ? ? }

? ? ? ? if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {

? ? ? ? ? ? mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());

? ? ? ? }

? ? ? ? return mybatisPlus;

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容