• oracle+mybatis报错:BindingException("Invalid bound statement (not found): ")


    oracle+mybatis报错:BindingException("Invalid bound statement (not found): ")

    从mysql转到oracle数据库:原来mysql保存数据的时候有的字段可以是Null值得,到了oracle里面,字段为null会报错。

    于是乎使用了mybatis-plus插件。

    在保存数据是email字段是可以为空的。

    @TableField(value="EMAIL", el="email, jdbcType=VARCHAR")
     private String email;
    

      

    结果导致报错:

    BindingException("Invalid bound statement (not found): ")
    

      

    需要在映射mapper的sql方法上增加@Flush注解

    @Repository
    public interface ISysDictMapper extends IBaseMapper<SysDictPO> {
    
        @Flush
        List<SysDictPO> queryAvailableDict();
    }
    

      

    可以增加配置项:https://blog.csdn.net/qq_21747795/article/details/81217264

    解决方法:请将mybatis-plus改成mybatis,mybatis,mybtis,重要的说三遍,
    必要的架包如下
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring- boot-starter</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>2.1.9</version>
    </dependency>
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
    <version>1.3.2</version>
    </dependency>

    注意第一个是mybatis-spring-boot-start ,不是mybatisplus-spring-boot-start

    还要在mybatis配置文件里声明MybatisSqlSessionFactoryBean,至此问题解决

    @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 已经自动加载的资源。不手动指定
         * 配置文件和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()));
            }
            mybatisPlus.setConfiguration(properties.getConfiguration());
            if (!ObjectUtils.isEmpty(this.interceptors)) {
                mybatisPlus.setPlugins(this.interceptors);
            }
            MybatisConfiguration mc = new MybatisConfiguration();
            mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
            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;
        }
    }
    

      

  • 相关阅读:
    iot 表 主键索引叶子块包含了表所有数据
    iot 表索引dump《2》
    iot 表索引dump《2》
    heap表和iot表排序规则不同
    heap表和iot表排序规则不同
    ActiveMQ学习总结(4)——业界消息队列简介
    主宰全球的10大算法
    主宰全球的10大算法
    主宰全球的10大算法
    SVN学习总结(1)——SVN简介及入门使用
  • 原文地址:https://www.cnblogs.com/achengmu/p/11169756.html
Copyright © 2020-2023  润新知