| 
					
				 | 
			
			
				@@ -0,0 +1,62 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.onemap.apply.config; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.core.JsonProcessingException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fasterxml.jackson.databind.ObjectMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.type.BaseTypeHandler; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.type.JdbcType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.ibatis.type.MappedTypes; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.postgresql.util.PGobject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.sql.CallableStatement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.sql.PreparedStatement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.sql.ResultSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.sql.SQLException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@MappedTypes({Object.class}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class FileObjTypeHandler extends BaseTypeHandler<Object> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final PGobject jsonObject = new PGobject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final ObjectMapper objectMapper = new ObjectMapper();  // 使用 Jackson 的 ObjectMapper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Object o, JdbcType jdbcType) throws SQLException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (preparedStatement != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            jsonObject.setType("jsonb"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                jsonObject.setValue(objectMapper.writeValueAsString(o));  // 使用 Jackson 进行序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (JsonProcessingException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new SQLException("Error converting Object to JSON", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            preparedStatement.setObject(i, jsonObject); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Object getNullableResult(ResultSet resultSet, String s) throws SQLException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String json = resultSet.getString(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return objectMapper.readValue(json, Object.class);  // 使用 Jackson 进行反序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (JsonProcessingException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new SQLException("Error converting JSON to Object", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Object getNullableResult(ResultSet resultSet, int i) throws SQLException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String json = resultSet.getString(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return objectMapper.readValue(json, Object.class);  // 使用 Jackson 进行反序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (JsonProcessingException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new SQLException("Error converting JSON to Object", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Object getNullableResult(CallableStatement callableStatement, int i) throws SQLException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String json = callableStatement.getString(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return objectMapper.readValue(json, Object.class);  // 使用 Jackson 进行反序列化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (JsonProcessingException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new SQLException("Error converting JSON to Object", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |