SmartSql 快速使用指南
摘要:
SmartSql 快速使用指南(https://github.com/Ahoo-Wang/SmartSql
)
ISmartSqlMapper 常用(部分)介面概述
函式
說明
...
SmartSql 快速使用指南(ofollow,noindex" target="_blank">https://github.com/Ahoo-Wang/SmartSql )
ISmartSqlMapper 常用(部分)介面概述
函式 | 說明 |
---|---|
Execute | IDbCommand.ExecuteNonQuery,執行返回受影響行數 |
ExecuteScalar | IDbCommand.ExecuteScalar,執行並返回查詢返回的ReultSet中第一行的第一列 |
Query | 執行返回實體列表 |
QuerySingle | 執行返回單個實體 |
GetDataTable | 執行返回DataTable |
GetDataSet | 執行返回DataSet |
BeginTransaction | 開啟事務 |
CommitTransaction | 提交事務 |
RollbackTransaction | 回滾事務 |
新增
Statement
<Statement Id="Insert"> INSERT INTO T_User (UserName ,Password ,Status ,LastLoginTime ,CreationTime) VALUES (?UserName ,?Password ,?Status ,?LastLoginTime ,?CreationTime) ;Select Last_Insert_Id(); </Statement>
返回主鍵
ISmartSqlMapper SqlMapper = MapperContainer.Instance.GetSqlMapper(); long userId = _smartSqlMapper.ExecuteScalar<long>(new RequestContext { Scope = "User", SqlId = "Insert", Request = new User { UserName = request.UserName, Pwd = request.Pwd, Status = Entitiy.UserStatus.Ok, CreationTime = DateTime.Now, } });
新增返回受影響行數
SqlMapper.Execute(new RequestContext { Scope = "User", SqlId = "Insert", Request = new User { UserName = request.UserName, Pwd = request.Pwd, Status = Entitiy.UserStatus.Ok, CreationTime = DateTime.Now, } });
刪除
<Statement Id="Delete"> Delete FROMT_User Where Id=?Id </Statement>
SqlMapper.Execute(new RequestContext { Scope = "User", SqlId = "Delete", Request = new { Id = 3 } });
更新
Statement.Update
<Statement Id="Update"> UPDATE T_User <Set> <IsProperty Prepend="," Property="UserName"> UserName = ?UserName </IsProperty> <IsProperty Prepend="," Property="Password"> Password = ?Password </IsProperty> <IsProperty Prepend="," Property="Status"> Status = ?Status </IsProperty> <IsProperty Prepend="," Property="LastLoginTime"> LastLoginTime = ?LastLoginTime </IsProperty> <IsProperty Prepend="," Property="CreationTime"> CreationTime = ?CreationTime </IsProperty> </Set> Where Id=?Id </Statement>
全量更新
SqlMapper.Execute(new RequestContext { Scope = "User", SqlId = "Update", Request = new User { Id=1, UserName = request.UserName, Pwd = request.Pwd, Status = Entitiy.UserStatus.Ok, CreationTime = DateTime.Now, } });
區域性更新
SqlMapper.Execute(new RequestContext { Scope = "User", SqlId = "Update", Request = new { Id=1 , Pwd = "SmartSql" } });
查詢 返回List
<Statement Id="Query"> SELECT T.* From T_User T <Where> <IsNotEmpty Prepend="And" Property="EqUserName"> T.UserName=$EqUserName </IsNotEmpty> <IsNotEmpty Prepend="And" Property="UserName"> T.UserName Like Concat('%',$UserName,'%') </IsNotEmpty> </Where> <Switch Prepend="Order By" Property="OrderBy"> <Default> T.Id Desc </Default> </Switch> <IsNotEmpty Prepend="Limit" Property="Taken">?Taken</IsNotEmpty> </Statement>
var list = SqlMapper.Query<User>(new RequestContext { Scope = "User", SqlId = "Query", Request = new { Taken = 10 } });
查詢 返回單個實體
<Statement Id="GetEntity"> Select T.* From T_User T <Where> <IsNotEmpty Prepend="And" Property="Id"> T.Id=?Id </IsNotEmpty> </Where> Limit 1 </Statement>
var user = SqlMapper.QuerySingle<User>(new RequestContext { Scope = "User", SqlId = "GetEntity", Request = new { Id = 1 } });
事務
try { SqlMapper.BeginTransaction(); //BizCode(); SqlMapper.CommitTransaction(); } catch (Exception ex) { SqlMapper.RollbackTransaction(); throw ex; }
儲存過程
DbParameterCollection dbParameterCollection = new DbParameterCollection(); dbParameterCollection.Add(new DbParameter { Name = "Total", DbType = System.Data.DbType.Int32, Direction = System.Data.ParameterDirection.Output }); RequestContext context = new RequestContext { CommandType = System.Data.CommandType.StoredProcedure, RealSql = "SP_QueryByPage", Request = dbParameterCollection }; var list = SqlMapper.Query<User>(context); var total = dbParameterCollection.GetValue<int>("Total");