MySQL bigint types and iBATIS
One nuance I recently ran into while using iBATIS was inserting data into MySQL bigint unsigned columns. iBATIS doesn’t seem to have a way to handle BigInteger data types and throws an exception when attempting to do an insert. Fetching data out seemed to work OK because if iBATIS doesn’t know how to handle a certain type it just returns a java.lang.Object. The way to go about inserting BigInteger types is to set up a type handler. Here’s an example type handler for BigInteger types:
package org.qnot.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.SQLException;
import java.sql.Types;
import com.ibatis.sqlmap.client.extensions.ParameterSetter;
import com.ibatis.sqlmap.client.extensions.ResultGetter;
import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
public class BigIntegerTypeHandler implements TypeHandlerCallback {
public Object getResult(ResultGetter getter) throws SQLException {
if(getter.wasNull()) {
return null;
}
Object o = getter.getObject();
if(o instanceof BigDecimal) {
BigDecimal bd = (BigDecimal)o;
return bd.toBigInteger();
} else if(o instanceof BigInteger) {
return (BigInteger)o;
} else {
return o;
}
}
public void setParameter(ParameterSetter setter, Object parameter)
throws SQLException {
if (parameter == null) {
setter.setNull(Types.BIGINT);
} else {
BigInteger i = (BigInteger) parameter;
setter.setBigDecimal(new BigDecimal(i));
}
}
public Object valueOf(String s) {
return s;
}
}
Then all you have to do is register the type handler in your sqlmap-config.xml file like so:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true" />
<typeHandler javaType="java.math.BigInteger"
callback="org.qnot.util.BigIntegerTypeHandler"/>
<sqlMap resource="sql/example.xml"/>
</sqlMapConfig>
分享到:
相关推荐
大整数四则运算 BigInt 加减乘除 括号 优先级,Python支持无限精度的运行,Java有BigInteger类,但是对C和C++就只能自己实现,这是一个带加减乘除运算的实现。
1、mysql数据库转国产化瀚高数据库; 2、有些函数在瀚高数据库中不存在,需要添加自定义函数。
类似java里面的BigInteger类型,进行大数存储和计算!
在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地理解和使用这两种类型。 字符串类型 在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是...
非常详细的对MySql数据库类型的介绍.
自定义的C++有符号大整数类型bigint
bigint.ts Tom Wu的BigInteger.js TypeScript包装器
JDBC数据类型与数据库字段对应表——mysql篇 数值型 整型 JDBC tinyint java.lang.Integer smallint mediumint java.lang.Long int bigint java.math.BigInteger
BigInt 节点 这是由创建的纯 Javascript Big Integer 库的 Node.JS 端口。 它目前还没有导出所有功能(大部分与加密相关的功能都没有),但导出了大多数只需要使用 Big Integers 所需的功能。 在可能的情况下,此...
最近一周接连处理了2个由于int向varchar转换无法使用索引,从而引发的慢查询。 CREATE TABLE `appstat_day_prototype_201305` ( `day_key` date NOT NULL DEFAULT '1900-01-01', `appkey` varchar(20) NOT NULL ...
BigInt Calculator 是一个支持超大整数运算的计算器,可以对长度最多达10000位10进制的数据进行运算。它不但支持普通的四则混合运算,而且具有位操作和表达式运算功能,计算器本身提供了21个存贮单元可供保存运算的中间...
用C++编写bigint类型,实现超过float容量的大数字乘法
数据库中可以用datetime、bigint、timestamp来表示时间,那么选择什么类型来存储时间比较合适呢?
MySQL和Oracle的关键字还是不尽相同的,在Oracle数据库中,我们的数据表中定义了大量的code字段用来表示主键,但是在MySQL中code是关键字,使用以前的处理方法就有些“水土不服”。 下面我们来了解一下MySQL中的...
javascript RSA 加密用到的文件(RSA.js BigInt.js, Barrett.js) 附带了rsa1.js,这个版本集成了以上3个文件,加密内容固定,自行斟酌使用
该函数是将传进的ip地址转换成bigint类型的sql函数 如:12.3.1.33 -> 201523489
包含大整数的各种运算函数,如加法、减法、乘法、除法、取余等
bigint 大数计算源码
Mysql数据库设计 数据库设计 MYSQL数据库设计 串转义序列 \0 NUL(ASCLL 0) \' \" \b 退格 \n 新⾏ \r 回车 \t 制表符 \\ 反斜杠 数值列类型 TINYINT 1字节 ⾮常⼩的整数 有符号值:-128⾄127 ⽆符号值:0⾄255 ...
MySQL 支持多种数据类型,以下是一些常用的数据类型: • 整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。 • 浮点数和定点数类型:FLOAT、DOUBLE、DECIMAL。 • 字符串类型:CHAR、VARCHAR、TEXT、TINYTEXT...