首页 > 作文

java mybatis如何操作postgresql array数组类型

更新时间:2023-04-04 16:21:13 阅读: 评论:0

目录
我定义了几个基础数据类型的数组java mybatis操作 postgresql array数组类型备忘

找了半天没有找到postgresql中关于array数组类型的字段如何对应到java中的数据类型,后来找到了mybatis的typehandler,只要实现一个自定义的typehandler就行了,如下,

我定义了几个基础数据类型的数组

public class arraytypehandler extends batypehandler<object[]> {    private static final string type_name_varchar = "varchar";    private static final string type_name_integer = "integer";    private static final string type_name_boolean = "boolean";    private static final string type_name_numeric = "numeric";    @override    public void tnonnullparameter(preparedstatement ps, int i, object[] parameter, jdbctype jdbctype) throws sqlexception {        string typename = null;        if (parame不患寡而患不均ter instanceof integer[]) {            typename = type_name_integer;        } el if (parameter渡汉江宋之问 instanceof string[]) {            typename = type_name_varchar;        } el if (parameter instanceof boolean[]) {            typename = type_name_boolean;        } el if (parameter instanceof double[]) {            typename = type_name_numeric;        }        if (typename == null) {            throw new typeexception("arraytypehandler parameter typename error, your type is " + parameter.getclass().getname());        }        // 这3行是关键的代码,创建array,然后ps.tarray(i, array)就可以了        connection conn = ps.getconnection();        array array = conn.createarrayof(typename, parameter);        ps.tarray(i, array);    }    @override    public object[] getnullableresult(resultt resultt, string s) throws sqlexception {        return getarray(resultt.getarray(s));    }    @override    public object[] getnullableresult(resultt resultt, int i) throws sqlexception {        return getarray(resultt.getarray(i));    }    @override    public object[] getnullableresult(callablestatement callablestatement, int i) throws sqlexception {        return getarray(callablestatement.getarray(i));    }    private object[] getarray(array array) {        if (array == null) {            return null;        }        try {            return (object[]) array.getarray();        } catch (exception e) {        }        return null;    }}

四季养生汤然后在实体类里面对应的字段配置这个转换器就行,如果是配置文件需要在 xxmap.xml中配置对应属性

@columntype(typehandler = com.mvc.typehandler.arraytypehandler.class)private string[] cities; //所操作的城市code列表,为空表示所有城市@columntype(typehandler = com.mvc.typehandler.arraytypehandler.class)private string[] areatypes;冰雪美人 //操作的行业类型code列表,为空表示所有行业@columntype(typehandler = com.jmtool.mvc.typehandler.arraytypehandler.cla引号的作用及举例ss)private integer[] targetstatus; //操作的目标数据状态

java mybatis操作 postgresql array数组类型备忘

postgrey sql数据库字段类型varchar[],java使用string[]类型,自定义arraytypehandler

arraytypehandler.java

public class arraytypehandler extends batypehandler<object[]> {    private static final string type_name_varchar = "varchar";    private static final string type_name_integer = "integer";    private static final string type_name_boolean = "boolean";    private static final string type_name_numeric = "numeric";    @override    public void tnonnullparameter(preparedstatement ps, int i, object[] parameter, jdbctype jdbctype) throws sqlexception {        string typename = null;        if (parameter instanceof integer[]) {            typename = type_name_integer;        } el if (parameter instanceof string[]) {            typename = type_name_varchar;        } el if (parameter instanceof boolean[]) {            typename = type_name_boolean;        } el if (parameter instanceof double[]) {            typename = type_name_numeric;        }        if (typename == null) {            throw new typeexception("arraytypehandler parameter typename error, your type is " + parameter.getclass().getname());        }        // 这3行是关键的代码,创建array,然后ps.tarray(i, array)就可以了        connection conn = ps.getconnection();        array array = conn.createarrayof(typename, parameter);        ps.tarray(i, array);    }    @override    public object[] getnullableresult(resultt resultt, string s) throws sqlexception {        return getarray(resultt.getarray(s));    }    @override    public object[] getnullableresult(resultt resultt, int i) throws sqlexception {        return getarray(resultt.getarray(i));    }    @override    public object[] getnullableresult(callablestatement callablestatement, int i) throws sqlexception {        return getarray(callablestatement.getarray(i));    }    private object[] getarray(array array) {        if (array == null) {            return null;        }        try {            return (object[]) array.getarray();        } catch (exception e) {        }        return null;    }}

配置文件中映射配置,增加typehandler属性,填写arraytypehandler.java的全路径。

<result column="source_type" jdbctype="array" property="sourcetype" typehandler="com.wang.common.arraytypehandler" />

用到的sql:

<inrt id="inrt" parametertype="com.wang.pojo.qzf"> inrt into t_qz_qzf(id,source_type) values (#{id,jdbctype=varchar},#{sourcetype,jdbctype=array,typehandler="com.wang.common.arraytypehandler"})</inrt>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 16:21:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f75dc3f9f532480fc727c58cc68aeb3a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java mybatis如何操作postgresql array数组类型.doc

本文 PDF 下载地址:java mybatis如何操作postgresql array数组类型.pdf

标签:数组   类型   操作   字段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图