`

mybatis使用问题记录

 
阅读更多

mybatis使用问题记录

     1. 与spring整合 启动报错, 一直读取不到properties中设置的属性

        

<bean id="scanner" class="org.mybatis.spring.MapperScannerConfigurer">  
    <property name="annotationClass" value="org.springframework.stereotype.Repository"></property>  
    <property name="basePackage" value="com.xxx.*.mapper"></property>  
    <property name="sqlSessionFactory" value="sqlSessionFactory"></property> 
</bean>

 

         原因:mybatis配置中使用了MapperScannerConfigurer进行自动扫描,会使spring的propertyPlaceholderConfigurer失效,

因为MapperScannerConfigurer在解析加载bean定义阶段设置了sqlSessionFactory的话会提前初始化一此类,

此时propertyPlaceholderConfigurer还没来得及替换定义的变量。

         解决: 使用sqlSessionFactoryBeanName 代替sqlSessionFactory

       

<bean id="scanner" class="org.mybatis.spring.MapperScannerConfigurer">  
    <property name="annotationClass" value="org.springframework.stereotype.Repository"></property>  
    <property name="basePackage" value="com.xxx.*.mapper"></property>  
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> 
</bean>

 

   2.项目中之前是用的sqlserver数据库,需要连到oracle上  直接切换运行会报错(只有在插入数据,更新数据时报错)

              java.sql.SQLException: 无效的列类型

                              OraclePreparedStatement.setNull()

         原因:实体mapper.xml 配置文件  在插入,更新的sql上都没有写加对应数据类型

          如  values(#{username,jdbcType=VARCHAR})    所以插入null数据会报错  没有自动转换成对应类型。 

          加上jdbcType = 类型之后正确,但是工作量太大,每个mapper.xml都需要改动

       查找mybatis配置说明发现settings下属性: jdbcTypeForNull   此属性默认设置是OTHER,在oracle数据库驱动使用时处理null会有问题,需要指定此属性为null

   


设置参数 描述 有效值 默认值
jdbcTypeForNull

Specifies the JDBC type for null values when no specific JDBC type

was provided for the parameter. Some drivers require

specifying the column JDBC type but others work with generic values like NULL, VARCHAR or OTHER.

JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER OTHER

               设置<settings>

                               <setting name="jdbcTypeForNull" value="NULL"></setting>

                        </settings>         

     运行正常

 

 3. 待续  遇到后补上

分享到:
评论

相关推荐

    Mybatis拦截器记录数据更新历史记录到MongoDB

    本文将深入探讨如何使用Mybatis拦截器来记录数据更新历史记录,并将其存储到MongoDB中。 首先,我们来理解Mybatis拦截器的原理。Mybatis的拦截器是基于Java的动态代理机制实现的,它允许我们在特定的执行点(如SQL...

    mybatis使用的jar包.zip

    首先,`log4j-1.2.17.jar`是Apache Log4j的1.2版本,一个广泛使用的日志记录框架。在MyBatis中,日志模块用于输出SQL语句和执行时间,便于调试和性能优化。通过配置log4j.properties或log4j.xml,你可以选择不同的...

    mybatis demo mybatis 实例

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题“mybatis demo mybatis 实例”指的是一个MyBatis的学习示例项目,...

    MyBatis基本使用总结

    在MyBatis中,实体类是用来封装数据库中的表记录的Java对象,而映射文件(通常是XML格式)则定义了实体类与数据库表之间的映射关系。映射文件包含了SQL语句、结果映射、参数映射等内容,使得MyBatis能根据这些信息...

    hibernate与mybatis一起使用取长补短

    7. **错误调试**: MyBatis的SQL日志记录功能可以帮助开发者快速定位SQL执行问题,而Hibernate的实体追踪也有助于理解对象状态和变化。 通过这种混合使用的方式,开发团队可以充分利用Hibernate的便利性和MyBatis的...

    Mybatis使用案例

    要使用Mybatis,首先需要在项目中引入Mybatis的依赖库,这通常通过Maven或Gradle完成。然后,配置Mybatis的核心配置文件`mybatis-config.xml`,包括数据源、事务管理器和映射文件的位置等信息。 3. **...

    通过Mybatis拦截器自动定位慢SQL并记录日志

    为了有效地管理和解决这个问题,我们可以利用Mybatis的拦截器机制来自动检测并记录慢SQL。下面我们将详细介绍如何通过Mybatis拦截器实现这一功能。 首先,了解Mybatis拦截器的基本概念。Mybatis拦截器(Interceptor...

    mybatis使用实例

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在"mybatis使用实例"中,我们主要会探讨以下几个关键知识点: 1. **...

    mybatis慢SQL插件

    使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow-threshold: 100 或 application.properties 配置如下: sql.slow-threshold=100 参数解释:以上...

    mybatis的中文api文档

    MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis的其他语言版本包括英语、西班牙语、日语和韩语,以及简体中文。 ...

    Spring mvc 和 mybatis 整合、 mybatis使用注解模式

    本文将深入探讨如何整合Spring MVC与MyBatis,以及如何在MyBatis中使用注解模式。 首先,Spring MVC是一个轻量级的Java Web框架,它提供了强大的模型处理、视图解析和控制器管理功能。而MyBatis则是一个持久层框架...

    MyBatis使用手册(中文版)3.4.4版

    8. **插件机制**:MyBatis允许用户自定义插件,通过拦截器实现对SqlSession的方法调用进行增强,例如性能监控、日志记录等。 9. **SQL执行**:使用SqlSession的selectOne、selectList、insert、update和delete方法...

    mybatis,mybatis+mysql

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在"mybatis,mybatis+mysql"的学习路径中,首先你需要理解MyBatis的核心...

    Mybatis批量foreach merge into的用法

    然后,使用Mybatis的动态SQL语法foreach循环插入,待插入的实体bean的List通过查询数据库dual形成表。foreach的 separator 属性设置每次循环的隔离词为union连接每次形成的表为一个总表。 在总表中,条件匹配时,...

    mybatis_3.5.9官方中文文档pdf

    MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 的主要特点包括: 1. 动态 SQL:MyBatis 提供了动态 SQL ...

    mybatis在非spring环境下如何使用

    一般使用mybatis的环境,大多都是别人已经配置好的。直接用就好了,如何自己搭建呢?其实很简单。看官方的文档就可以解决了。主要为了学习mybatis最基础的配置。我文章中的方法不基于spring,一般很少会在真实项目中...

    ibatis解决多对一n+1问题(更新上传例子(mybatis)代码)

    在提供的"mybatis_test"压缩包中,可能包含了示例代码,展示了如何在MyBatis中使用上述策略来解决“n+1”问题。通过分析这些代码,我们可以更深入地理解如何在实际项目中应用这些技巧。 总之,掌握MyBatis中的关联...

    MyBatis使用手册PDF

    MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 ### 关键知识点 1. **MyBatis 使用环境搭建** - MyBatis 可以与 ...

    mybatis 3.2.6

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的"mybatis 3.2.6"指的是MyBatis框架的3.2.6版本。在这一版本中,...

    MyBatis使用示例1

    【MyBatis使用示例1】是一篇关于如何在项目中使用MyBatis框架的教程。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。通过XML或...

Global site tag (gtag.js) - Google Analytics