一、查询select

  还记得第一篇示例中的是如何读出数据库里的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就是存入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方法:

  <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方法。

  映射文件:

    <update id="UpdateOne" resultMap="Person">
Update Person Set Name = #Name# Where Id = #Id#
</update>

  程序代码如下:

  PersonModel p = new PersonModel();
  p.Id = ;
  p.Name = "张三";
  return (int)mapper.Update("UpdateOne", p);

四、Delete

  删除方法与上面一样,我都感觉自己都有点啰嗦了。

  映射文件:

    <delete id="DeleteOne" resultMap="Person">
Delete Person Where Id = #Id#
</delete>

  程序代码:

  PersonModel p = new PersonModel();
  p.Id = ;
  p.Name = "张三";
  return (int)mapper.Delete("DeleteOne", p);
  //return (int)mapper.Delete("DeleteOne", 5); //另外这样也可以
原文地址:http://www.cnblogs.com/kissdodog/p/3295577.html
 
 

Ibatis.Net 数据库操作(四)的更多相关文章

  1. Ibatis.Net 数据库操作学习(四)

    一.查询select 还记得第一篇示例中是如何读出数据库里3条数据的吗?就是调用了一个QueryForList方法,从方法名就知道,查询返回列表. 1.QueryForList  返回List< ...

  2. 【转】Mybatis/Ibatis,数据库操作的返回值

    该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...

  3. 【转】 Mybatis/Ibatis,数据库操作的返回值

    该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...

  4. ThinkPHP 数据库操作(四) : 聚合查询、时间查询、高级查询

    聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: ...

  5. Mybatis/Ibatis,数据库操作的返回值

    该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...

  6. mysql在cmd命令下执行数据库操作

    windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下的mysql中是导入不进去的,因为mysql数据库本身就有默认的导入文件大 ...

  7. Python/MySQL(四、MySQL数据库操作)

    Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...

  8. Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别

    1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...

随机推荐

  1. Maven核心概念之依赖,聚合与继承

    一.依赖 我们项目中依赖的jar包可以通过依赖的方式(dependencies元素下添加dependency子元素)引入. <dependency> <groupId>juni ...

  2. pod JONSKit.h MBProgress.h 找不到头文件,怎么办?

    这时你看项目pod部分,多了JSONKit库.好了,第三方库就这么神奇的加进来. 头文件路径 那试试看使用JONSKit.h,在ViewController.m里引用下.找不到头文件,怎么办?还没设置 ...

  3. easyui 进度条

    进度条创建 $.messager.progress({ title:'请稍后', msg:'正在努力...' }); 进度条关闭 $.messager.progress('close'); 弹窗对话框 ...

  4. 如何定位摄像机,使物体在屏幕上始终具有相同的像素宽度和高度?(threes)

    from How to position the camera so that the object always has the same pixel width and height on the ...

  5. bzoj3529(莫比乌斯反演+离线+树状数组)

    在你以为理解mobus的时候,苦苦想通过化简公式来降低复杂度时,这题又打了我一巴掌. 看来我并没有理解到acmicpc比赛的宗旨啊. 这么多次查询可以考虑离线操作,使用树状数组单点更新. /***** ...

  6. D3.js 其他选择元素方法

    在上一节中,已经讲解了 select 和 selectAll,以及选择集的概念.本节具体讲解这两个函数的用法. 假设在 body 中有三个段落元素: <p>Apple</p> ...

  7. IOS开发证书变成“此证书的签发者无效”解决方法

    IOS开发证书全部变成无效,如下图  打包提示错误  解决方法: 1. 下载https://developer.apple.com/certificationauthority/AppleWWDRCA ...

  8. android中textview设置为多行文本时,如何让文字从最顶开始显示

    <span style="white-space:pre"> </span><EditText android:layout_width=" ...

  9. json方法

    http://penghuaiyi.iteye.com/blog/1922632 package com.yd.web.util; import java.lang.reflect.Type; imp ...

  10. 【hdu2196】Computer

    hdu 2196 computer 题意 给你一棵树,边有权值. 对于每一个点,求其与其距离最远的点的距离. 分析 思路1:树的直径 利用直径的性质进行求解,网上资料很多,这里不赘述. #includ ...