前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC:数据库自定义类型与Java类的映射—将对象存储在关系数据库中(二)

JDBC:数据库自定义类型与Java类的映射—将对象存储在关系数据库中(二)

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-25 15:12:33
3.5K0
发布2019-01-25 15:12:33
举报
文章被收录于专栏:给永远比拿愉快

这里利用PostgreSQL扩展的JDBC方法进行数据库自定义类型和Java类的映射关系,将Java对象插入关系数据库中。

步骤如下:

1.在数据库中自定义数据类型(CREATE TYPE TypeName AS) 2.在Java中新建对应的JavaBean,继承PGobject类,实现Serializable接口。 3.将数据库连接对象Connection接口强制转换成PGConnection,添加数据类型映射 ((PGConnection)connection).addDataType(TypeName, 类型对应JavaBean的类) 4.给JavaBean对象设置类型。利用setType方法,参数为数据库中的TypeName。 5.利用PreparedStatement的setObject方法设置。

下面给出实例代码:

自定义数据类型:

代码语言:javascript
复制
CREATE TYPE provider AS(
  name varchar(20),
  address varchar(20)
);

对应的Java类:

代码语言:javascript
复制
public class Student extends PGObject implements Serializable {
  private String name;
  private String address;

  public Student() {}

  public Student(String name, String address) {
    this.name = name;
    this.address = address;
  }

  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }

  public void setAddress(String address) {
    this.address = address;
  }
  public void getAddress() {
    return address;
  }
}

关系映射和数据插入:

代码语言:javascript
复制
try {
    String sqlStr = "INSERT INTO goods(id, name, price, type, provider) VALUES(?, ?, ?, ?, ?)";
    ((PGConnection)dbConnection).addDataType("provider", Provider.class);
    PreparedStatement pStatement = dbConnection.prepareStatement(sqlStr);
    pStatement.setInt(1, goods.getId());
    pStatement.setString(2, goods.getName());
    pStatement.setBigDecimal(3, goods.getPrice());
    pStatement.setString(4, goods.getType());
    goods.getProvider().setType("provider");
    pStatement.setString(5, goods.getProvider());
    pStatement.execute();
    pStatement.close();
} catch (Exception e) {
    e.printStackTrace();
}

搞了两天终于搞定了!有遇到类似问题的童鞋可以参考!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014年09月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档