zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    

      

  • 相关阅读:
    自定义注解!绝对是程序员装逼的利器!!
    Java集合总结大全史上最强
    年轻人不讲武德,竟然还搞不懂JVM?求你们来看阿里Java开发岗的招聘要求吧!
    基于VisualStudio11开发Windows8的Direct2DMetro应用程序范例(2) 国际化文字展示
    现实世界的Windows Azure:采访SIVECO Romania的高级电子教学部门经理Florin Anton
    Microsoft Research和Windows Azure合作伙伴对数据发现和共享的影响
    Windows Azure安全信任中心启动了
    Windows Azure ISV博客系列:Tribe of Noise PRO
    基于Visual Studio2012实现Windows8的metro界面笔迹手写识别文档
    基于VisualStudio11开发Windows8的Metro sample讲解(1)MessageBox
  • 原文地址:https://www.cnblogs.com/achengmu/p/11169756.html
Copyright © 2011-2022 走看看