Ibatis.Net 数据库操作(四)
一、查询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); //另外这样也可以
Ibatis.Net 数据库操作(四)的更多相关文章
- Ibatis.Net 数据库操作学习(四)
一.查询select 还记得第一篇示例中是如何读出数据库里3条数据的吗?就是调用了一个QueryForList方法,从方法名就知道,查询返回列表. 1.QueryForList 返回List< ...
- 【转】Mybatis/Ibatis,数据库操作的返回值
该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...
- 【转】 Mybatis/Ibatis,数据库操作的返回值
该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...
- ThinkPHP 数据库操作(四) : 聚合查询、时间查询、高级查询
聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: ...
- Mybatis/Ibatis,数据库操作的返回值
该问题,我百度了下,根本没发现什么有价值的文章:还是看源代码(详见最后附录)中的注释,最有效了!insert,返回值是:新插入行的主键(primary key):需要包含<selectKey&g ...
- mysql在cmd命令下执行数据库操作
windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下的mysql中是导入不进去的,因为mysql数据库本身就有默认的导入文件大 ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- 数据库操作事物的四大特性以及MySQL数据库的四种隔离级别
1 .事物操作数据库的四大特性(ACID) 1.原子性 (Atomicity) 原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚. 2.一致性 (Consistency) 一致性:简 ...
随机推荐
- ORACLE数据库DBMS_JOB的创建与使用
http://my.oschina.net/u/2309120/blog/371437 创建 DBMS_JOB 使用以下语句: VARIABLE jobno number;begin DBMS_JOB ...
- linux install sublime_text3
ubuntu & debian: (baidu or google) 1). download ***.deb to install inux系统下怎么安装.deb文件? deb 是 ubun ...
- Java编程思想学习笔记_3(继承,内部类)
一.继承与清理 如果某个类需要去清理自身的资源,那么必须用心为其创建回收垃圾的方法,而如果此类有导出的子类,那么必须在导出类中覆盖回收的方法,当覆盖被继承类的回收垃圾的方法的时候,需要注意销毁的顺序应 ...
- JavaSE 复习_4 接口多态和内部类
△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...
- hdu1907(anti-sg入门)
改变了下规则,现在变成了最后拿的人输. 如果对于单纯的nim的话,只需要判断每堆都是1个石子的特殊情况. 因为如果存在有大于1个石子的堆话,类似于nim的取法,处于必胜状态的一方只需要在 对方取完后只 ...
- D3.js 力导向图的制作
力导向图中每一个节点都受到力的作用而运动,这种是一种非常绚丽的图表. 力导向图(Force-Directed Graph),是绘图的一种算法.在二维或三维空间里配置节点,节点之间用线连接,称为连线. ...
- mysql报关于用户密码1045(28000),几种处理方法 (zhuan)
http://blog.itpub.net/29371470/viewspace-1409075/ http://blog.csdn.net/rosten/article/details/250658 ...
- JDK中的Timer和TimerTask详解(zhuan)
http://www.cnblogs.com/lingiu/p/3782813.html ************************************************** 目录结构 ...
- Winform_播放声音文件
1.调用非托管的dll using System.Runtime.InteropServices; //DllImport命名空间的引用 class test //提示音 { [DllImport ...
- libsvm 之 easy.py(流程化脚本)注释
鉴于该脚本的重要性,很有必要对该脚本做一个全面的注释,以便可以灵活的使用libsvm. #!/usr/bin/env python # 这种设置python路径的方法更为科学 import sys i ...