SmartSql 快速使用指南(https://github.com/Ahoo-Wang/SmartSql)

ISmartSqlMapper 常用(部分)接口概述

函数 说明
Execute IDbCommand.ExecuteNonQuery,执行返回受影响行数
ExecuteScalar IDbCommand.ExecuteScalar,执行并返回查询返回的ReultSet中第一行的第一列
Query 执行返回实体列表
QuerySingle 执行返回单个实体
GetDataTable 执行返回DataTable
GetDataSet 执行返回DataSet
BeginTransaction 开启事务
CommitTransaction 提交事务
RollbackTransaction 回滚事务

新增

Statement

  1. <Statement Id="Insert">
  2. INSERT INTO T_User
  3. (UserName
  4. ,Password
  5. ,Status
  6. ,LastLoginTime
  7. ,CreationTime)
  8. VALUES
  9. (?UserName
  10. ,?Password
  11. ,?Status
  12. ,?LastLoginTime
  13. ,?CreationTime)
  14. ;Select Last_Insert_Id();
  15. </Statement>

返回主键


  1. ISmartSqlMapper SqlMapper = MapperContainer.Instance.GetSqlMapper();
  2. long userId = _smartSqlMapper.ExecuteScalar<long>(new RequestContext
  3. {
  4. Scope = "User",
  5. SqlId = "Insert",
  6. Request = new User
  7. {
  8. UserName = request.UserName,
  9. Pwd = request.Pwd,
  10. Status = Entitiy.UserStatus.Ok,
  11. CreationTime = DateTime.Now,
  12. }
  13. });

新增返回受影响行数

  1. SqlMapper.Execute(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "Insert",
  5. Request = new User
  6. {
  7. UserName = request.UserName,
  8. Pwd = request.Pwd,
  9. Status = Entitiy.UserStatus.Ok,
  10. CreationTime = DateTime.Now,
  11. }
  12. });

删除

  1. <Statement Id="Delete">
  2. Delete FROM T_User
  3. Where Id=?Id
  4. </Statement>
  1. SqlMapper.Execute(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "Delete",
  5. Request = new { Id = 3 }
  6. });

更新

Statement.Update

  1. <Statement Id="Update">
  2. UPDATE T_User
  3. <Set>
  4. <IsProperty Prepend="," Property="UserName">
  5. UserName = ?UserName
  6. </IsProperty>
  7. <IsProperty Prepend="," Property="Password">
  8. Password = ?Password
  9. </IsProperty>
  10. <IsProperty Prepend="," Property="Status">
  11. Status = ?Status
  12. </IsProperty>
  13. <IsProperty Prepend="," Property="LastLoginTime">
  14. LastLoginTime = ?LastLoginTime
  15. </IsProperty>
  16. <IsProperty Prepend="," Property="CreationTime">
  17. CreationTime = ?CreationTime
  18. </IsProperty>
  19. </Set>
  20. Where Id=?Id
  21. </Statement>

全量更新

  1. SqlMapper.Execute(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "Update",
  5. Request = new User
  6. {
  7. Id=1,
  8. UserName = request.UserName,
  9. Pwd = request.Pwd,
  10. Status = Entitiy.UserStatus.Ok,
  11. CreationTime = DateTime.Now,
  12. }
  13. });

局部更新

  1. SqlMapper.Execute(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "Update",
  5. Request = new { Id=1 , Pwd = "SmartSql" }
  6. });

查询 返回List

  1. <Statement Id="Query">
  2. SELECT T.* From T_User T
  3. <Where>
  4. <IsNotEmpty Prepend="And" Property="EqUserName">
  5. T.UserName=$EqUserName
  6. </IsNotEmpty>
  7. <IsNotEmpty Prepend="And" Property="UserName">
  8. T.UserName Like Concat('%',$UserName,'%')
  9. </IsNotEmpty>
  10. </Where>
  11. <Switch Prepend="Order By" Property="OrderBy">
  12. <Default>
  13. T.Id Desc
  14. </Default>
  15. </Switch>
  16. <IsNotEmpty Prepend="Limit" Property="Taken">?Taken</IsNotEmpty>
  17. </Statement>
  1. var list = SqlMapper.Query<User>(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "Query",
  5. Request = new
  6. {
  7. Taken = 10
  8. }
  9. });

查询 返回单个实体

  1. <Statement Id="GetEntity">
  2. Select T.* From T_User T
  3. <Where>
  4. <IsNotEmpty Prepend="And" Property="Id">
  5. T.Id=?Id
  6. </IsNotEmpty>
  7. </Where>
  8. Limit 1
  9. </Statement>
  1. var user = SqlMapper.QuerySingle<User>(new RequestContext
  2. {
  3. Scope = "User",
  4. SqlId = "GetEntity",
  5. Request = new { Id = 1 }
  6. });

事务

  1. try
  2. {
  3. SqlMapper.BeginTransaction();
  4. //BizCode();
  5. SqlMapper.CommitTransaction();
  6. }
  7. catch (Exception ex)
  8. {
  9. SqlMapper.RollbackTransaction();
  10. throw ex;
  11. }

存储过程

  1. DbParameterCollection dbParameterCollection = new DbParameterCollection();
  2. dbParameterCollection.Add(new DbParameter
  3. {
  4. Name = "Total",
  5. DbType = System.Data.DbType.Int32,
  6. Direction = System.Data.ParameterDirection.Output
  7. });
  8. RequestContext context = new RequestContext
  9. {
  10. CommandType = System.Data.CommandType.StoredProcedure,
  11. RealSql = "SP_QueryByPage",
  12. Request = dbParameterCollection
  13. };
  14. var list = SqlMapper.Query<User>(context);
  15. var total = dbParameterCollection.GetValue<int>("Total");

SmartSql 快速使用指南的更多相关文章

  1. Rancher 快速上手指南操作(1)

    Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubunt ...

  2. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  3. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  4. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

  5. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  6. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. AngularJS快速入门指南15:API

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  8. AngularJS快速入门指南14:数据验证

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  9. AngularJS快速入门指南13:表单

    一个AngularJS表单是一组输入型控件的集合. HTML控件 HTML输入型标签标包括: input标签 select标签 button标签 textarea标签 HTML表单 HTML表单将各种 ...

随机推荐

  1. 【强连通分量+概率】Bzoj2438 杀人游戏

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...

  2. BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案

    BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 分析: ...

  3. BZOJ_3747_[POI2015]Kinoman_线段树

    BZOJ_3747_[POI2015]Kinoman_线段树 Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放 ...

  4. 面试必问!Java 多线程中两个线程交替执行,一个输出偶数,一个输出奇数

    前言 楼主今天在面经上看到这个题,挺有意思,小小的题目对多线程的考量还挺多.大部分同学都会使用 synchronized 来实现.楼主今天带来另外两种优化实现,让你面试的时候,傲视群雄! 第一种 sy ...

  5. java编写词法分析器

    词法分析器就是通过扫描一段程序判断是否是关键字.标识符.常数.分界符.运算符.一般分为一符一种和经典五中: 这里我用的是经典五中,此词法分析器是用java编写的: /* 保留字|关键字:1 操作符|运 ...

  6. tomcat7支持https配置

    基本环境:centos7.0   jdk1.8  tomcat7 1.下载tomcat,解压到指定目录 例如:/home/test/apache-tomcat-7.0.81 2.生成证书  首先进入J ...

  7. ASP.NET中的Cookie对象

    1.Cookie对象 Cookie对象一般用于在客户端保存一些针对某个用户的信息. Cookie本质上只是一小段文本字符串,改字符串一般保存在用户计算机特定文件夹下的某个文件中,每个Cookie都保存 ...

  8. Python练习:哥德巴赫猜想

    哥德巴赫猜想 哥德巴赫 1742 年给欧拉的信中哥德巴赫提出了以下猜想:任一大于 2 的偶数都可写成两个质数之和.但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死 ...

  9. 小白学习Python之路---re模块学习和挑战练习

    本节大纲: 1.正则表达式 2.re模块的学习 3.速记理解技巧 4.挑战练习--开发一个简单的python计算器 5.心得总结 6.学习建议 正则表达式: 正则表达式,又称规则表达式.(英语:Reg ...

  10. .NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

    内容:本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 在这一篇文章中我们希望使用Ope ...