<?xmlversion="1.0"encoding="utf-8"?>
<sqlMapnamespace="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>
|
|
//这个类调用IBatis来存取数据 using System; using TouPiao.DataAccess; using TouPiao; using System.Collections; using IBatisNet.DataMapper; using IBatisNet.DataMapper.Configuration; namespace TouPiao.Model { ///<summary> ///投票类 ///</summary> public class TouPiaoClass {
SqlMapper sm=null; public TouPiaoClass() { sm=new GetSqlMapper().GetMapper(); } public IList GetItemsByID(int ID){
return sm.QueryForList("GetItemsByID",ID); } ///<summary> ///增加一个新的选项 ///</summary> ///<param name="pID">所属项目ID</param> ///<param name="ItemText">选项文本</param> public void AddNewItem(int pID,string ItemText) { ItemList il=new ItemList(); il.pID=pID; il.ItemText=ItemText; sm.Insert("AddNewItem",il); } ///<summary> ///删除一个选项 ///</summary> ///<param name="ID">选项ID</param> public void DelItem(int ID){ sm.Delete("DelItem",ID); } ///<summary> ///更新一个选项 ///</summary> ///<param name="ID">选项ID</param> ///<param name="ItemText">选项文本</param> ///<param name="tCount">选项计数</param> public void UpdateItem(int ID,string ItemText,int tCount){ ItemList il=new ItemList(); il.ID=ID; il.ItemText=ItemText; il.tCount=tCount; sm.Update("UpdateItem",il); } ///<summary> ///将指定的选项的计数加1 ///</summary> ///<param name="al">选中的选项列表</param> public void AddItemCount(string al){ sm.Update("AddItemCount",al.Trim(',')); }
|
|