创建Java UDR过程
1, 将共享库gbasedbt-judr-x.x.x.jar 放置于数据库服务器上
比如,放到$GBASEDBTDIR/udr 目录下,并改名为judr.jar
则gbasedbt-judr-x.x.x.jar的位置为$GBASEDBTDIR/udr/judr.jar
下载地址:https://docs.gbasedbt.com/Java_Udr/install/gbasedbt-judr-1.0.0.jar
2, 设置数据库的JVP环境
ONCONFIG配置文件涉及到JVP的相关参数
1)VPCLASS开启jvp,用于处理Java UDR,默认不开启,取消前面的注释符’#',如果有较多调用,可增加jvp的数量
VPCLASS jvp,num=1
2)JVPARGS增加 -Dfile.encoding=UTF-8(根据实际需要增加与否,即直接java执行的参数),JVPCLASSPATH增加judr.jar
JVPARGS -Dcom.ibm.tools.attach.enable=no;-Dfile.encoding=UTF-8
JVPCLASSPATH $GBASEDBTDIR/extend/krakatoa/krakatoa.jar:$GBASEDBTDIR/extend/krakatoa/jdbc.jar:$GBASEDBTDIR/udr/judr.jar
重启数据库生效,通过onstat -g glo确认已经增加的jvp。
3, 创建相应的例程
示例:
drop function if exists ifnull(lvarchar,lvarchar);
create dba function ifnull(lvarchar,lvarchar)
returns lvarchar
with (not variant, handlesnulls)
external name 'com.gbasedbt.judr.mysql.MysqlFunc.ifnull(java.lang.String,java.lang.String)'
language java;
其中function中的 ifnull(lvarchar,lvarchar)应与Java中的定义相对应;
external name 为java中的名称: java类名.方法
使用:
select ifnull(null,'abc') from dual;
4, Java Udr 函数说明
Math类
– conv 进制转换函数
function conv(lvarchar,int,int)
– rand 随机函数(1-1亿的随机数)
function rand()
– random 随机函数(0-1之间的随机数)
function random()
– randnum 指定范围内的随机数
function randomnum(int,int)
HEX
– decodeHex
– 使用默认字符集UTF-8
function decodeHex(lvarchar)
– 第二个参数指定字符集,如UTF-8,GBK
function decodeHex(lvarchar,lvarchar)
– encodeHex
– 使用默认字符集UTF-8
function encodeHex(lvarchar)
– 第二个参数指定字符集,如UTF-8,GBK
function encodeHex(lvarchar,lvarchar)
CRYPT
– decodeBase64
– 输出ascii结果
function decodeBase64(lvarchar)
– decodeBase64Hex
– 输出hex结果
function decodeBase64Hex(lvarchar)
– decryptAES (PKCS5)
– 指定8位secret
function decryptAES(lvarchar,lvarchar)
– 使用默认的8位secret
function decryptAES(lvarchar)
– decryptDES (PKCS5)
– 指定8位secret
function decryptDES(lvarchar,lvarchar)
– 使用默认的8位secret
function decryptDES(lvarchar)
– encodeBase64
– 输出ascii结果
function encodeBase64(lvarchar)
– encodeBase64Hex
– 输出hex结果
function encodeBase64Hex(lvarchar)
– encodeMD5
function encodeMD5(lvarchar)
– encryptAES
– 指定8位secret
function encryptAES(lvarchar,lvarchar)
– 使用默认的8位secret
function encryptAES(lvarchar)
– encryptDES
– 指定8位secret
function encryptDES(lvarchar,lvarchar)
– 使用默认的8位secret
function encryptDES(lvarchar)
– sm4_decrypt
– 指定16位secret
function decryptSM4(lvarchar,lvarchar)
– 使用默认的16位secret
function decryptSM4(lvarchar)
– sm4_encrypt
– 指定16位secret
function encryptSM4(lvarchar,lvarchar)
– 使用默认的16位secret
function encryptSM4(lvarchar)
MySQL兼容
– ascii
function jascii(lvarchar)
– chr
function jchr(int)
– randomstr,随机字符串
function randomstr(int)
– 指定大小写
function randomstr(lvarchar,int)
– uuid
function juuid()
– now
function now()
– unix_timestamp
function unix_timestamp()
-- 指定日期时间字符串
function unix_timestamp(lvarchar)
– from_unixtime
function from_unixtime(int)
– ifnull
function ifnull(lvarchar,lvarchar)
– find_in_set 兼容函数
function find_in_set(lvarchar,lvarchar)
– format 兼容函数
function format(float,int)
– repeat 兼容函数
function repeat(lvarchar,int)
说明
gbasedbt-judr-x.x.x.jar中包含的函数,具体参考javadoc