From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsDatabase/DmsUuidTypeHandler.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsDatabase/DmsUuidTypeHandler.java b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsDatabase/DmsUuidTypeHandler.java
new file mode 100644
index 0000000..2481c01
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/main/java/jnpf/dmsDatabase/DmsUuidTypeHandler.java
@@ -0,0 +1,53 @@
+package jnpf.dmsDatabase;
+
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.UUID;
+
+@MappedTypes(UUID.class)
+@MappedJdbcTypes(value = JdbcType.OTHER, includeNullJdbcType = true)
+public class DmsUuidTypeHandler extends BaseTypeHandler<UUID> {
+
+    @Override
+    public void setNonNullParameter(PreparedStatement statement, int index, UUID value, JdbcType jdbcType)
+            throws SQLException {
+        statement.setObject(index, value, Types.OTHER);
+    }
+
+    @Override
+    public UUID getNullableResult(ResultSet resultSet, String columnName) throws SQLException {
+        return toUuid(resultSet.getObject(columnName));
+    }
+
+    @Override
+    public UUID getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {
+        return toUuid(resultSet.getObject(columnIndex));
+    }
+
+    @Override
+    public UUID getNullableResult(CallableStatement statement, int columnIndex) throws SQLException {
+        return toUuid(statement.getObject(columnIndex));
+    }
+
+    private UUID toUuid(Object value) throws SQLException {
+        if (value == null) {
+            return null;
+        }
+        if (value instanceof UUID) {
+            return (UUID) value;
+        }
+        try {
+            return UUID.fromString(value.toString());
+        } catch (IllegalArgumentException exception) {
+            throw new SQLException("Invalid PostgreSQL UUID value: " + value, exception);
+        }
+    }
+}

--
Gitblit v1.8.0