记录一下Invalid bound statement (not found)的解决方法

1、网上找到的方案

1、namespace不正确;
2、id不对应;
3、mapper-locations不正确;
4、文件夹\和.的问题;
5、xml没有编译或不在resource;
都尝试了一遍,还是没有解决;为啥呢?想不通!!!

2、最终解决方案

既然以上方案都没用,那是不是mapper-locations没生效啊?版本不对吗?手动设置一下看看!重写一下SqlSessionFactory。

package com.jeecg.p3.system.config;

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@Slf4j
@Configuration
class DBDataSourceConfig {

    @Value("${mybatis.mapper-locations}")
    private String mapperLocation;


    @Bean(name = "dbNormalSqlSessionFactory")
    @Primary
    public SqlSessionFactory sqlSessionFactory(DataSource dynamicDataSource)
            throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dynamicDataSource);
        String[] resources = mapperLocation.split(",");
        Resource[] resources1 = new PathMatchingResourcePatternResolver().getResources(resources[0]);
        List<Resource> resourceList = new ArrayList<>();
        resourceList.addAll(Arrays.asList(resources1));
        Resource[] resourcesAll =  new Resource[resourceList.size()];
        resourcesAll = resourceList.toArray(resourcesAll);

        sessionFactory.setMapperLocations(resourcesAll);
        return sessionFactory.getObject();
    }

}

好了,再运行一下,可以连库查询了!?!

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值