技术细节讲得很清楚,学到了!
实践出真知,感谢分享实战经验
签到…
加油!!!
可以的,MyBatis 通过自定义 TypeHandler 就能把向量字段映射到 Java 成员。思路是:数据库侧向量列存的是文本格式(如 [0.1,0.2,0.3]),Java 侧用 float[] 或 List<Float> 接收。
核心步骤:
- 实体类定义向量成员:
public class DocEntity {
private Long id;
private float[] embedding; // 对应向量列
}
- 编写 TypeHandler:
@MappedTypes(float[].class)
public class VectorTypeHandler extends BaseTypeHandler<float[]> {
@Override
public void setNonNullParameter(PreparedStatement ps, int i, float[] param, JdbcType type) {
// 转成 [0.1,0.2,...] 文本
ps.setString(i, Arrays.toString(param));
}
@Override
public float[] getNullableResult(ResultSet rs, String col) {
String val = rs.getString(col);
// 解析文本为 float[]
return parseVector(val);
}
}
- Mapper XML 中指定 typeHandler:
<resultMap id="docMap" type="DocEntity">
<result column="embedding" property="embedding" typeHandler="VectorTypeHandler"/>
</resultMap>
插入时同理,在 #{embedding, typeHandler=VectorTypeHandler} 即可。这样就不依赖 obvec_jdbc,用标准 MyBatis 流程处理向量字段。
感谢作者的整理和分享
签到…
感谢分享!
赞一个!
干货满满,受益匪浅
内容很好
期待更多分享
支持支持
经验分享很有价值
内容很好
赞一个!
期待更多分享