<
sqlMap
namespace
="ItemList"
xmlns
:
xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi
:
noNamespaceSchemaLocation
="SqlMap.xsd">
<alias><!-- alias:
取别名
assembly:
表示类所在的文件
type:
表示该类的完整的名称
--
>
<typeAliasalias="ItemList"assembly="TouPiao.dll"type="TouPiao.DataAccess.ItemList"/>
<typeAliasalias="XiangMuBiao"assembly="TouPiao.dll"type="TouPiao.DataAccess.XiangMuBiao"/>
</alias>
<!--
resultMaps:
resultMaps
用于返回值时进行ORM
resultMap:
其中每个resultMap对应一个ORM
id:
表示名称
class:
表示对应的类的别名根据<alias>标签中的定义
result:
property
表示类中的属性
column
表示数据库中对应的字段
--
>
<resultMaps>
<resultMapid="ItemResult"class="ItemList">
<resultproperty="ID"column="ID"/>
<resultproperty="ItemText"column="ItemText"nullValue="
没有选项"/>
<resultproperty="pID"column="pID"/>
<resultproperty="tCount"column="tCount"nullValue="-1"/>
</resultMap>
</resultMaps>
<!--
parameterMap:
id:
表示名称,不能少
其他的参数可以不写,例如 class
parameter:
property:
表示类中的属性,不能少,并且应用在存储过程中的时候,必须按照参数的位置
其他参数可以省略:
column:
数据库中的字段
direction:
参数的传递方式 Input|Output|InputOutput
dbType:
数据库中的字段的类型
type:
类的属性的类型,可能要写成CLR形式,例如int类型应该写成System.Int32
nullValue:
空值转换,将空值转换成指定的值,以便防止某些类型不支持NULL的类型出错,例如int double等,注意:
1.
只能转换成与property类型相一致的值
2.
空不代表"",而是NULL
3.
当该属性的类型匹配一个代替空值的值的时候(例如:-9999),更新字段的时候,空值将代替这个值被写入数据库,即nullValue指定的值不被写入数据库
size:
数据库中字段的大小,设置字段中的数据的最大值
precision:
数据库中字段的精度,设置当该字段映射到类的对应的属性时的精度
--
>
<parameterMaps>
<parameterMapid="AddNewItemParam"><!--AddNewItem
的参数列表--
>
<parameterproperty="ItemText"/>
<patameterproperty="pID"/>
</parameterMap>
<!--DelItem
参数列表 --
>
<parameterMapid="DelItemMap">
<parameterproperty="value"/>
</parameterMap>
<parameterMapid="UpdateItemMap">
<parameterproperty="ID"column="ID"/>
<parameterproperty="ItemText"column="ItemText"/>
<parameterproperty="tCount"column="tCount"/>
</parameterMap>
<parameterMapid="AddItemCountMap">
<parameterproperty="value"/>
</parameterMap>
<patameterMapid="AddNewXiangMuMap">
<parameterproperty="Title"/>
<patameterproperty="IsMul"/>
</patameterMap>
</parameterMaps>
<!--
statements:
语句的集合
<statement>
标签可以替代<select>,<procedure> ,<delete>,<update>,<insert>,并且可以通过SqlMapper的delete update insert方法以及所有关于查询的方法执行
<select>:
可以通过SqlMapper的所有关于查询的方法执行
<delete> <insert> <update>:
可以通过SqlMapper的 delete update insert方法执行
<delete> <insert> <update> <statement> <select> <procedure>:
id:
该语句的标识
resultMap:
只有<select> <statement>才有,用于将结果映射到相应的字段,该属性不能少
parameterMap:
用于<procedure>的时候不能缺少,并且对应的parameterMap的<parameter>的property的顺序必须和存储过程的参数的顺序一致
parameterClass:
可以省略,将使用调用时传进来的类型进行调用
注意:
<select id="GetItemsByID" resultMap="ItemResult">
select * from ItemList where pID=#ID#
</select>
当调用时使用
sqlMapper.QueryForList("GetItemByID",1) //
这时候#ID#的直就是1
sqlMapper.QueryForList("GetItemByUD",ItemClass) //
假设ItemClass包含一个ID字段,和name字段,那么这时候#ID#的值就是ItemClass.ID的值
--
>
<statements>
<!--
使用Sql语句,通过项目ID获得该项目的所有选项
注意:
该标签没有指定parameterMap或者parameterClass,将根据前台调用时指定的对象作为参数,如果前台传进来的是一个原始对象例如:int string 等那么#ID#就是
该参数的值
如果传进来的是一个类的对象,假设该类包含两个属性(name,ID)
那么#ID#就代表该对象的ID属性,由于name属性没有被用到,因此被忽略
如果需要传进两个参数(不是某个对象的属性),那么必须将包含这两个键值的Hashtable对象作为参数传进来
--
>
<selectid="GetItemsByID" resultMap="ItemResult">
select * from ItemList where pID=#ID#
</select>
<selectid="GetItemsByIDAndDate" resultMap="ItemResult">
select * from ItemList where pID=#ID# and isvis=#ISVIS#
</select>
<!--
调用一个存储过程,增加一个选项 存储过程必须指定 parameterMap,如果有返回值的话必须指定 resultMap--
>
<procedureid="AddNewItem"parameterMap="AddNewItemParam">
AddNewItem
</procedure>
<!--
调用一个存储过程,删除一个选项 --
>
<procedureid="DelItem"parameterMap="DelItemMap">
DelItem
</procedure>
<!--
调用一个存储过程,更新一个选项 --
>
<procedureid="UpdateItem"parameterMap="UpdateItemMap">
UpdateItem
</procedure>
<!--
调用一个存储过程,更新一个选项的值 --
>
<procedureid="AddItemCount"parameterMap="AddItemCountMap">
AddItemCount
</procedure>
</statements>
</
sqlMap
>
评论