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 OTHEROTHER

               设置<settings>

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

                        </settings>         

     运行正常

 

 3. 待续  遇到后补上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值