Mybatis 插入null值报错

解决方法:

1、在settings中配置

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

MyBatis-config.xml 中 set 的说明 []: 表示 可能的不太正确

<!-- 配置设置 -->
    <settings>
        <!-- 配置全局性 cache 的 ( 开 / 关) default:true -->
        <setting name="cacheEnabled" value="true"/>

        <!-- 是否使用 懒加载 关联对象  同 hibernate中的延迟加载 一样  default:true -->
        <setting name="lazyLoadingEnabled" value="true"/>

        <!-- [当对象使用延迟加载时 属性的加载取决于能被引用到的那些延迟属性,否则,按需加载(需要的是时候才去加载)] -->
        <setting name="aggressiveLazyLoading" value="true"/>

        <!-- 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true -->
        <setting name="multipleResultSetsEnabled" value="true"/>

        <!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true-->
        <setting name="useColumnLabel" value="true"/>

        <!--允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false-->
        <setting name="useGeneratedKeys" value="false"/>

        <!--指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部-->
        <setting name="autoMappingBehavior" value="PARTIAL"/>

        <!-- 这是默认的执行类型
            SIMPLE :简单
            REUSE:执行器可能重复使用prepared statements 语句
            BATCH:执行器可以重复执行语句和批量更新
        -->
        <setting name="defaultExecutorType" value="SIMPLE"/>

        <!-- 设置驱动等待数据响应的超时数  默认没有设置-->
        <setting name="defaultStatementTimeout" value="25000"/>

        <!-- [是否启用 行内嵌套语句  defaut:false] -->
        <setting name="safeRowBoundsEnabled" value="false"/>

        <!-- [是否 启用  数据中 A_column 自动映射 到 java类中驼峰命名的属性 default:fasle] -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>

        <!-- 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
        <setting name="localCacheScope" value="SESSION"/>

        <!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:other -->
        <setting name="jdbcTypeForNull" value="OTHER"/>

        <!-- 设置触发延迟加载的方法  -->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>

    </settings>

2、MyBatis 插入空值时,需要指定JdbcType 
mybatis insert空值报空值异常,但是在pl/sql不会提示错误,主要原因是mybatis无法进行转换

<insert id="insertCustomerLog1" parameterType="com.diyicai.customer.domain.CustomerLog">
        insert into customer_log
               (
               ID,
               CUSTOMER_SERVICE_USER_NAME,
               user_name ,
               CONTENT,
               LOG_FIRST_TYPE,
               STATUS,
               LINKED_ID,
               FEE,
               ACCOUNT_FIRST_TYPE,
               ACCOUNT_SECOND_TYPE,
               ACCOUNT_THIRD_TYPE,
               LOG_SECOND_TYPE,
               LOG_IP,
               MEMO
               )
               values
               (
               seq_customer_log.nextval ,
               #{customerServiceUserName,jdbcType=VARCHAR} ,
               #{username,jdbcType=VARCHAR},
               #{content,jdbcType=VARCHAR},
               #{logFirstType,jdbcType=NUMERIC},
               #{status,jdbcType=NUMERIC},
               #{linkedId,jdbcType=VARCHAR},
               #{fee,jdbcType=NUMERIC},
               #{accountFirstType,jdbcType=NUMERIC},
               #{accountSecondType,jdbcType=NUMERIC},
               #{accountThirdType,jdbcType=NUMERIC},
               #{logSecondType,jdbcType=NUMERIC},
               #{logIp,jdbcType=VARCHAR},
               #{memo,jdbcType=VARCHAR}
               )
    </insert>

参考:http://takeme.iteye.com/blog/1732801         http://makemyownlife.iteye.com/blog/1610021

时间: 2024-10-11 15:36:02

Mybatis 插入null值报错的相关文章

PreparedStatement传进null值报错

最近在测试jdbc数据导入大量数据的性能,发现PreparedStatement传进null值会报错. 解决方法: setObject(int parameterIndex, Object x, int targetSqlType) 如:preparedStatement.setObject(10,org.springframework.util.StringUtils.isEmpty(row[9]) ? null : Integer.parseInt(row[9]),java.sql.Type

mysql 插入中文字段报错 &quot;Incorrect string value: &#39;\\xE6\\xB5\\x8B\\xE8\\xAF\\x95...&#39; for column &#39;title&#39; at row 1&quot;

1. 查看一个 database 或一个 table 的编码show create database mytestdb;show create table testapp_article; mysql> show create table testapp_article;+-----------------+-----------------------------------------------------------------------------------------------

logstash 数据插入mongodb,去掉附加信息,若删除@timestamp,插入数据会报错

input { file { path => ['/gwlog/data/**/*.json'] discover_interval => 1 ignore_older => 5 start_position => "beginning" close_older => 6 max_open_files => 200000 codec => json } } filter { mutate { remove_field => ["

关于Code Blocks无编译器版本及VC6.0插入、打开报错

CodeBlocks运行C成功,编译C++一直报错:fatal error:stdlib.h:no such file or directory.下载重装了几次Code Blocks无编译器版本以及MINGW.看了很多教程,并不能解决问题.据说是版本对不上,于是重置电脑,安装带有编译器的版本成功运行.至于具体原因有待探究. 另VC6.0插入.打开报错,微软官方之前给出了相应插件,不过现已失效.使用百度引擎找到免费.便捷的链接并不容易.为了方便大众,现将链接附上. https://pan.baid

解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: ‘\xE5\xB0\x8F\xE6\x98\x8E‘ for column ‘name‘ at row 1

原文:解决mysql插入中文字符报错的问题ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1 报错内容: mysql> insert into person values (1,22,'小明');ERROR 1366 (HY000): Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for colum

null值插入数据库会报错

2017-05-03 23:25:01,568 [com.creditharmony.adapter.dao.base.ParamRecordDao.insertException]-[DEBUG] ==> Parameters: 201705032324543866997(String), 接口服务器产生系统错误.(String), java.lang.NullPointerException at com.creditharmony.adapter.core.client.ClientSer

mybatis 中文做参数报错

一个简单的查询,如果参数中有中文.如下: <select id="xxxx" resultType="hashmap"> select * from talbe_a a where a.kpeople = ${name} </select> 报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQ

redis取值报错

> get "all_couriers_on_the_job" (error) ERR Operation against a key holding the wrong kind of value #类型不对,所以报错,先查看值的类型: > type "all_couriers_on_the_job" hash > HGETALL "all_couriers_on_the_job" 1) "47" 2) &

插入mysql语句报错:1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

插入一个很简单的sql语句时候,mysql一直报错: [SQL] INSERT INTO ORDER ( id, activity_id, order_type, phone, order_amount, order_state, pay_type)VALUES ( '4', '2121313', '1', '13552444989', '1', '1', '1' ) [Err] 1064 - You have an error in your SQL syntax; check the man