我们现在用的数据访问组件封装了IBatis.Net框架,提供了标准的数据访问接口和服务。正好总结一下老技术IBatis.Net
在进行实际的数据访问开发之前,我们先了解一下:IBatis.Net中几个重要的配置文件和一些关键的技术原理:
4个重要的配置文件:
关键的技术特性
开发一个数据访问的业务功能,主要有以下4个步骤:
示例几个关键的写法
1. 一对多关系,批量Insert
- <insert id="SaveDomainModel" parameterClass="DomainModel">
- begin INSERT INTO Meta_DomainModel(ID,Name,RootDomainObjectID, IsCache,
- CacheStrategy, IsLogicallyDeleted, DataLoaderConfig, Version,Creator,LastModifier)VALUES(
- #ID#,#Name#,#RootDomainObjectID#,#IsCache:VarChar#,#CacheStrategy#,#IsLogicDelete:VarChar#,#DataLoaderConfig#,#Version#,#Creator#,#LastModifier#)
- <iterate conjunction=" " open="" close="" property="DomainObjects">
- INSERT INTO Meta_DomainObject(ID,Name,DomainModelID,IsRootObject,ParentObjectID,ClazzReflectType,PropertyName,IsLazyLoad,DataObjectID,Creator,LastModifier)
- VALUES(#DomainObjects[].ID#,#DomainObjects[].Name#,#DomainObjects[].DomainModelID#,#DomainObjects[].IsRootObject:VarChar#,#DomainObjects[].ParentObjectID#,#DomainObjects[].ClazzReflectType#,
- #DomainObjects[].PropertyName#,#DomainObjects[].IsLazyLoad:VarChar#,#DomainObjects[].DataObjectID#,#DomainObjects[].Creator#,#DomainObjects[].LastModifier#)
- </iterate>
- end;
- </insert>
2. 简单批量Insert插入
- <insert id="SaveDomainObjectElements" parameterClass="ArrayList">
- begin
- <iterate conjunction=" " open="" close="" >
- INSERT INTO Meta_DomainObjectElement(ID,Name,Alias,DisplayName,DomainObjectID,DataType,Length,Precision,DefaultValue,IsAllowNull,ElementType,DataColumnID,
- PropertyType,PropertyName,IsForQuery,Creator,LastModifier)
- VALUES(#[].ID#,#[].Name#,#[].Alias#,#[].DisplayName#,#[].DomainObjectID#,#[].DataType#,#[].Length#,#[].Precision#,#[].DefaultValue#,#[].IsAllowNull:VarChar#,#[].ElementType#,#[].DataColumnID#,
- #[].PropertyType#,#[].PropertyName#,#[].IsForQuery:VarChar#,#[].Creator#,#[].LastModifier#)
- </iterate>
- end;
- </insert>
3. 查询一对多结果集
- <resultMap id="DataObjectResultMap" class="DataObject" groupby="ID">
- <result property="ID" column="ID" />
- <result property="Name" column="Name" />
- <result property="Descriptions" column="Descriptions" />
- <result property="DataSourceName" column="DataSourceName" />
- <result property="LogicTableName" column="LogicTableName" />
- <result property="IsTableSharding" column="IsTableSharding" />
- <result property="IsDatabaseSharding" column="IsDatabaseSharding" />
- <result property="TableShardingStrategyID" column="TableShardingStrategy"
- />
- <result property="DatabaseShardingStrategyID" column="DatabaseShardingStrategy"
- />
- <result property="IsView" column="IsView" />
- <result property="IsLogicallyDeleted" column="IsLogicallyDeleted" />
- <result property="Version" column="Version" />
- <result property="Columns" resultMapping="MetadataMapper.DataColumnResultMap">
- </result>
- <result property="Creator" column="Creator" />
- <result property="CreateTime" column="CreateTime" />
- <result property="LastModifier" column="LastModifier" />
- <result property="LastModifyTime" column="LastModifyTime" />
- </resultMap>
- <resultMap id="DataColumnResultMap" class="DataColumn">
- <result property="ID" column="C_ID" />
- <result property="ColumnName" column="ColumnName" />
- <result property="DisplayName" column="DisplayName" />
- <result property="DataObjectID" column="DataObjectID" />
- <result property="DataTypeID" column="DataType" />
- <result property="Length" column="Length" />
- <result property="Precision" column="Precision" />
- <result property="DefaultValue" column="DefaultValue" />
- <result property="IsNullable" column="IsNullable" />
- <result property="IsPkColumn" column="IsPkColumn" />
- <result property="IsSystem" column="IsSystem" />
- <result property="IsShardingColumn" column="IsShardingColumn" />
- <result property="ColumnOrder" column="ColumnOrder" />
- <result property="Creator" column="C_Creator" />
- <result property="CreateTime" column="C_CreateTime" />
- <result property="LastModifier" column="C_LastModifier" />
- <result property="LastModifyTime" column="C_LastModifyTime" />
- </resultMap>
对应的Select 语句
- <select id="GetDataObject" resultMap="DataObjectResultMap" parameterClass="string">
- SELECT Meta_DataObject.ID,Meta_DataObject.Name,Descriptions, DataSourceName, LogicTableName, IsTableSharding, IsDatabaseSharding, TableShardingStrategy,DatabaseShardingStrategy,IsView,IsLogicallyDeleted,Version,Meta_DataObjectColumn.Creator,Meta_DataObjectColumn.LastModifier,Meta_DataObjectColumn.CreateTime,Meta_DataObjectColumn.LastModifyTime,
- Meta_DataObjectColumn.ID as C_ID,ColumnName,DisplayName,DataObjectID,DataType,Length,Precision,DefaultValue,IsNullable,IsPkColumn,IsShardingColumn,IsSystem,ColumnOrder,
- Meta_DataObjectColumn.Creator as C_Creator,Meta_DataObjectColumn.LastModifier as C_LastModifier,Meta_DataObjectColumn.CreateTime as C_CreateTime,Meta_DataObjectColumn.LastModifyTime as C_LastModifyTime
- FROM Meta_DataObject
- LEFT JOIN Meta_DataObjectColumn on Meta_DataObjectColumn.DataObjectID = Meta_DataObject.ID
- WHERE Meta_DataObject.ID=#id#
- </select>
4. 批量删除多张表
- <delete id="DeleteShardingStrategy" parameterClass="string">
- begin
- DELETE FROM Meta_ShardingColumn WHERE ShardingStrategyID=#id#
- DELETE FROM Meta_ShardingStrategy WHERE ID=#id#
- end;
- </delete>
5. 删除指定数据
- <delete id="DeleteShardingColumns" parameterClass="string">
- DELETE FROM Meta_ShardingColumn WHERE DataObjectID=#id#
- </delete>
6. 查询数据行数
- <select id="IsTaskExist" resultClass="int" parameterClass="string">
- SELECT COUNT(1) FROM TableTask WHERE name=#Name#
- </select>
以上就是一些简单的IBatis.Net总结。
周国庆
2017/10/14
来源: http://www.cnblogs.com/tianqing/p/7668850.html