# 类型处理器
SmartSql支持针对复杂类型的数据存储的序列化和反序列化操作,来提升开发者的效率。
# Nuget 安装
Install-Package SmartSql.TypeHandler
SmartSql.TypeHandler 包括了俩种类型的类型处理程序: JsonTypeHandler和XmlTypeHandler,当字段类型需要序列化成Json或Xml场景时可使用以下配置,即可将Data属性序列化成Json字符串存储到DB:
# SmartSqlMapConfig 子元素
<TypeHandlers>
<TypeHandler Name="Json" Type="SmartSql.TypeHandler.JsonTypeHandler,SmartSql.TypeHandler"/>
<TypeHandler Name="Xml" Type="SmartSql.TypeHandler.XmlTypeHandler,SmartSql.TypeHandler"/>
</TypeHandlers>
# SmartSqlMap 子元素
<ResultMaps>
<ResultMap Id="ExtendedDataResult">
<Result Property="Data" Column="Data" TypeHandler="Json"/>
</ResultMap>
</ResultMaps>
<ParameterMaps>
<ParameterMap Id="ExtendedDataParameter">
<Parameter Property="Data" TypeHandler="Json"/>
</ParameterMap>
</ParameterMaps>
# 对应序列化Statement配置
<Statement Id="PublishEvent" ParameterMap="ExtendedDataParameter">
# 对应反序列化配置
<Statement Id="PublishEvent" ResultMap="ExtendedDataParameter">
# 针对PostgreSql Json的处理需要Nuget安装SmartSql.TypeHandler.PostgreSql
Install-Package SmartSql.TypeHandler.PostgreSql
SmartSql.TypeHandler.PostgreSql 包括了如下类型处理程序:
属性 | 说明 |
---|---|
BoxTypeHandler | Box类型 |
CircleTypeHandler | Circle类型 |
DecimalArrayTypeHandler | Decimal[]类型 |
DictionaryTypeHandler | Dictionary类型 |
GuidArrayTypeHandler | Guid[]类型 |
InetTypeHandler | inet类型 |
Int16ArrayTypeHandler | Int16[]类型 |
Int32ArrayTypeHandler | Int32[]类型 |
Int64ArrayTypeHandler | Int64[]类型 |
JsonTypeHandler | Json类型 |
JsonTypeHandler`1 | Json类型 |
LineSegmentTypeHandler | LineSegment类型 |
LineTypeHandler | Line类型 |
PathTypeHandler | Path类型 |
PointTypeHandler | Point类型 |
PolygonTypeHandler | Polygon类型 |
StringArrayTypeHandler | String[]类型 |
当字段类型需要序列化成对应类型场景时可使用以上配置,例下面例子中可将Data属性序列化成Json字符串存储到DB:
# SmartSqlMapConfig 子元素
<TypeHandlers>
<TypeHandler Name="Json" Type="SmartSql.TypeHandler.PostgreSql.JsonTypeHandler,SmartSql.TypeHandler.PostgreSql"/>
</TypeHandlers>
# SmartSqlMap 子元素
<ResultMaps>
<ResultMap Id="ExtendedDataResult">
<Result Property="Data" Column="Data" TypeHandler="Json"/>
</ResultMap>
</ResultMaps>
<ParameterMaps>
<ParameterMap Id="ExtendedDataParameter">
<Parameter Property="Data" TypeHandler="Json"/>
</ParameterMap>
</ParameterMaps>
# Statement对应的配置同上
为了进一步提升开发者对数据操作的开发效率,SmartSql还加入了Json泛型类型处理器,免去SqlMap文件映射关系的配置。具体配置如下:
# SmartSqlMapConfig 子元素
<TypeHandler PropertyType="SmartSql.Test.Entities.UserInfo,SmartSql.Test" Type="SmartSql.TypeHandler.JsonTypeHandler`1,SmartSql.TypeHandler">
<Properties>
<Property Name="DateFormat" Value="yyyy-MM-dd mm:ss"/>
<Property Name="NamingStrategy" Value="Camel"/>
</Properties>
</TypeHandler>
<TypeHandlers>
<TypeHandler Name="Json" Type="SmartSql.TypeHandler.JsonTypeHandler`1,SmartSql.TypeHandler"/>
</TypeHandlers>