<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="IDCreaterMap" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<alias>
<typeAlias alias="IDCreater" type="EWineShop.Entity.EIDCreater" />
</alias>
<resultMaps>
<resultMap id="FullResultMap" class="IDCreater">
<result property="IDName" column="IDName" type="System.String" dbType="SqlDbType.VarChar"/>
<result property="CurrentCount" column="CurrentCount" type="System.Int32" dbType="SqlDbType.Int"/>
<result property="Description" column="Description" type="System.String" dbType="SqlDbType.NVarChar"/>
<result property="CreateTime" column="CreateTime" type="System.DateTime" dbType="SqlDbType.DateTime"/>
</resultMap>
</resultMaps>
<parameterMaps>
<parameterMap id="CreateNumberID" parameterClass="Hashtable">
<parameter property="IDName" column="IDName" type="string" dbType="NVarChar" direction="Input"/>
<parameter property="Description" column="Description" type="string" dbType="NVarChar" direction="Input"/>
<parameter property="Seed" column="Seed" type="int" dbType="Int" direction="Input"/>
<parameter property="ReturnID" column="ReturnID" type="int" dbType="Int" direction="Output" />
</parameterMap>
</parameterMaps>
<statements>
<select id="SelectAll" resultMap="FullResultMap">
SELECT * FROM IDCreater
</select>
<select id="SelectByIDName" parameterClass="String" resultMap="FullResultMap" extends="SelectAll">
WHERE
(IDCreater.IDName = #IDName#)
</select>
<update id="UpdateByIDName" parameterClass="IDCreater">
UPDATE IDCreater SET IDName=#IDName# , CurrentCount=#CurrentCount# , Description=#Description# , CreateTime=#CreateTime# WHERE IDName = #IDName#
</update>
<delete id="DeleteByIDName" parameterClass="string">
DELETE FROM IDCreater WHERE IDName = #IDName#
</delete>
<insert id="InsertIDCreater" parameterClass="IDCreater">
INSERT INTO IDCreater(IDName, CurrentCount, Description, CreateTime )
VALUES(#IDName# , #CurrentCount# , #Description# , #CreateTime# )
</insert>
<procedure id="GetNewID" resultClass="int" parameterMap="CreateNumberID">
CreateID
</procedure>
</statements>
</sqlMap>
"sqlMap namespace=" 配置文件的namespace
每个ResultMap都有一个自己的ID,如果你在sqlmap.config中没有配置使用命名空间的话,那么这个ResulteMap ID是全局(这点在所有的iBATIS配置元素都是一样的),ResultMap一个重要的属性的是class,它将决定这个ResultMap对应的实 例的类,换句话讲,它的作用是指出结果集要映射的数据类型。在extends属性中可以设置它将要继承的ResultMap,如果给他指定的了值,那么它 将会从super Resultmap继承所的映射配置字段。定义如下:
<resultMaps>
<resultMap id="FullResultMap" class="IDCreater">
</resultMap>
</resultMaps>
如果你有正确配置了iBATIS的XSD架构文件的话,那么这时候就会提示resultMap的定义是不完全的。没错,接下来就是要定义Result元 素。每一个result元素都是定义一个字段与数据类属性对应的映射。在每一个result元素有比较多的属性参数,其中property和column 是必须的,其它的参数属性都是可选的。所以我们在每一个resultMap中必须定义超过一个以上的result定义。通常以下的配置就可以完成基本的配 置了。
<resultMaps>
<resultMap id="FullResultMap" class="IDCreater">
<result property="IDName" column="IDName" type="System.String" dbType="SqlDbType.VarChar"/>
<result property="CurrentCount" column="CurrentCount" type="System.Int32" dbType="SqlDbType.Int"/>
<result property="Description" column="Description" type="System.String" dbType="SqlDbType.NVarChar"/>
<result property="CreateTime" column="CreateTime" type="System.DateTime" dbType="SqlDbType.DateTime"/>
</resultMap>
</resultMaps>
property对应 IDCreater实体类的属性 column="IDName" 对应数据库的 "IDName"字段 type="" 声明.net字段类型 dbtype声明DB类型
<statements></statements>节点就是sql语法了 下篇详细介绍
<parameterMaps> 就是声明存储过程
<select id="SelectAll" resultMap="FullResultMap">
SELECT * FROM IDCreater
</select>
这个SQL 返回结果是 FullResultMap 就是我们直接配置的对应关系
c# 调用语法
string stmtId = "IDCreaterMap.SelectAll"; return base.SqlMapper.QueryForList<EIDCreater>(stmtId, iDName);
这样就返回一个List;
<select id="SelectByIDName" parameterClass="String" resultMap="FullResultMap" extends="SelectAll"> WHERE (IDCreater.IDName = #IDName#) </select>
注意这个配置 他是扩展于 SelectAll 这个ID的 那么我们可以直接接着写条件了 where xx=xxxx
调用语法同上
--------------------------------------------------------------------------------------------------------------------------------------
update
<update id="UpdateByIDName" parameterClass="IDCreater"> UPDATE IDCreater SET IDName=#IDName# , CurrentCount=#CurrentCount# , Description=#Description# , CreateTime=#CreateTime# WHERE IDName = #IDName# </update>
调用语法
string stmtId = "IDCreaterMap.UpdateByIDName"; base.SqlMapper.Update(stmtId, entity);
看到这里可能大家要问 如果我只更新两个字段 难道非要把整个entity传进去吗?
我们可以这样写这个map 穿一个Hashtable
<update id="UpdateByIDName" parameterClass="Hashtable"> UPDATE IDCreater SET IDName=#IDName# , CurrentCount=#CurrentCount# WHERE IDName = #IDName# </update>
调用语法 注意Hashtable字段要对上
|
string stmtId = "IDCreaterMap.UpdateByIDName"; base.SqlMapper.Update(stmtId, ht);
----------------------------------------------------------------------------------------------------- |
Delete
<delete id="DeleteByIDName" parameterClass="string"> DELETE FROM IDCreater WHERE IDName = #IDName# </delete>
调用语法
string stmtId = "IDCreaterMap.DeleteByIDName"; base.SqlMapper.Update(stmtId, iDName);
------------------------------------------------------------------------------------------------------------
insert
<insert id="InsertIDCreater" parameterClass="IDCreater"> INSERT INTO IDCreater(IDName, CurrentCount, Description, CreateTime ) VALUES(#IDName# , #CurrentCount# , #Description# , #CreateTime# ) </insert>
如果我们插入的时候同时要的到自增的ID怎么写呢?
这样 写个例子 在下面加一列属性 selectkey
<insert id="InsertIDCreater" parameterClass="IDCreater"> INSERT INTO IDCreater(IDName, CurrentCount, Description, CreateTime ) VALUES(#IDName# , #CurrentCount# , #Description# , #CreateTime# ) <selectKey resultClass="System.Int32" Property="IDName" type="post"> SELECT @@IDENTITY AS value </selectKey> </insert>
若需要返回自增列的调用方法
string stmtId = "NewsMap.InsertIDCreater"; Object obj = base.SqlMapper.Insert(stmtId, entity); return (System.Int32)obj;