hibernate UserType使用心得

UserType中其他方法不用多说,主要说明下面两个方法

/**
* 负责将数据库中的数据解析为PO中对应属性的值
* PreparedStatement st:将存储到数据库中的数据集
* Object value:该属性的值。
* [color=olive]int index:不太清除具体作用。目前是直接使用[/color]
*/
public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException
{
如果是[color=red]把Object转为String存储[/color],则使用Hibernate提供的方法
String str = assemble((该Field的类型) value);
Hibernate.STRING.nullSafeSet(st, str, index);

但如果想[color=red]把Object转为Blob存储[/color]
// 自己负责将Object转为byte[],这里用String举例
byte[] bytes = string.getBytes();

st.setBytes(index, bytes);
}


/**
* 负责将数据库中的数据解析为PO中对应属性的值
* ResultSet rs:数据库中得到的数据结果集
* String names[]:列名。一般只用到names[0]
* [color=olive]Object owner:未使用到。待更新[/color]
*/
public Object nullSafeGet(ResultSet rs, String names[], Object owner)
throws HibernateException, SQLException
{
如果是[color=red]把Object转为String存储[/color],则使用Hibernate提供的方法
String value = (String) Hibernate.STRING.nullSafeGet(rs, names[0]);

如果[color=red]把Object转为Blob存储[/color],则使用
SessionImplementor sim = (SessionImplementor)session;
Hibernate.BLOB.nullSafeGet(rs, names, sim, owner);


不知道SessionImplementor 如何赋值时的解决办法:
根据属性名称直接获取对应的Blob值
String value = names[0];
Blob blobs = rs.getBlob(value);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值