还记得第一篇示例中的是如何读出数据库里的3条数据吗?
就是调用了一个QueryForList方法,从方法名就知道,查询返回列表。
1、QueryForList 返回List<T>强类型数据集合
来看看方法原型:
public IList<T> QueryForList<T>(string statementName, object parameterObject); public IList QueryForList(string statementName, object parameterObject); public void QueryForList<T>(string statementName, object parameterObject, IList<T> resultObject); public void QueryForList(string statementName, object parameterObject, IList resultObject); public IList<T> QueryForList<T>(string statementName, object parameterObject, int skipResults,int maxResults); public IList QueryForList(string statementName, object parameterObject, int skipResults, int maxResults);
有原型可以看出,其实只是3个参数不同方法,只是分为泛型与非泛型两个版本而已。
这个主要说说,参数skipResults,表示从结果行掉过skipResults行后返回,maxResults表示返回的行数。这个在分页中应该会用到。
下面来看一个最简单的示例:
xml映射文件中
<statements> <select id="SelectAllPerson" resultMap="Person"> <!--id在程序中会被SqlMapper实体类所调用,resultMap就是resultMap节点的id--> select * from person </select> </statements>
程序中的代码:
IList<PersonModel> ListPerson = mapper.QueryForList<PersonModel>("SelectAllPerson", null);
返回就是IList<PersonModel>的集合实例了。这个不多说。
2、QueryForObject 返回一行数据对应程序的实体类实例
下面来看看方法原型:
public object QueryForObject(string statementName, object parameterObject); public T QueryForObject<T>(string statementName, object parameterObject); public T QueryForObject<T>(string statementName, object parameterObject, T instanceObject); public object QueryForObject(string statementName, object parameterObject, object resultObject)
不多说,下面来看看实例:
xml映射文件:
<select id="SelectOnePerson" resultMap="Person"> select * from person where Id = #Id# <!--其中#Id就是存入的参数#--> </select>
程序代码:
PersonModel p = mapper.QueryForObject<PersonModel>("SelectOnePerson", 1); //1就是存入Sql语句的参数
返回就是一个PersonModel对象的实例了。
3、QueryWithRowDelegate 通过委托过滤返回的数据
下面来看看方法原型:
IList<T> QueryWithRowDelegate<T>(string statementName, object parameterObject, RowDelegate<T> rowDelegate); IList QueryWithRowDelegate(string statementName, object parameterObject, RowDelegate rowDelegate);
4、QueryForDictionary
5、QueryForMap
以上两个都不懂,看以后有没有用到,再算吧。
insert插入数据的方式比较简单,就只得一个方法Insert方法:
<insert id="InsertOne" resultMap="Person"> insert into Person (Name) values(#Name#) <selectKey type="post" resultClass="int" property="Id"> SELECT CAST(@@IDENTITY as int) as Id </selectKey> </insert>
因此此处Id设为了自增,所以SQL语句里面并不需要再设置Id
程序代码如下:
PersonModel p = new PersonModel(); p.Name = "曹操"; return (int)mapper.Insert("InsertOne",p);
Update方法同样简单,也只是条用一下Update方法。
映射文件:
<update id="UpdateOne" resultMap="Person"> Update Person Set Name = #Name# Where Id = #Id# </update>
程序代码如下:
PersonModel p = new PersonModel(); p.Id = 5; p.Name = "张三"; return (int)mapper.Update("UpdateOne", p);
删除方法与上面一样,我都感觉自己都有点啰嗦了。
映射文件:
<delete id="DeleteOne" resultMap="Person"> Delete Person Where Id = #Id# </delete>
程序代码:
PersonModel p = new PersonModel(); p.Id = 5; p.Name = "张三"; return (int)mapper.Delete("DeleteOne", p); //return (int)mapper.Delete("DeleteOne", 5); //另外这样也可以