MyDAL - 快速使用
索引:
一.安装
在 VS 中执行一下 package 命令:
PM> Install-Package MyDAL
二.API-快速使用
1.命名空间,只需:
using MyDAL;
2.准备好一个 XConnection 对象,目前支持 MySQL / SQL Server ,后续会支持 Oracle / Postgre SQL ... 等等:
以 MySQL 为例,如下:
//
// Nuget : Package : MySql.Data
//
// 不同版本 mysql 连接字符串一般如下:
// "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;"
// "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;"
// "Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;"
//
var Conn =
new XConnection
(
new MySqlConnection
("Server=localhost; Database=MyDAL_TestDB; Uid=SkyUser; Pwd=Sky@4321;SslMode=none;allowPublicKeyRetrieval=true;")
);
3.新增一条数据:
var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d");
var m15 = new AlipayPaymentRecord
{
Id = pk,
CreatedOn = DateTime.Parse("2018-08-20 19:12:05.933786"),
PaymentRecordId = Guid.Parse("e94f747e-1a6d-4be6-af51-016558c05b29"),
OrderId = Guid.Parse("f60f08e7-9678-41a8-b4aa-016558c05afc"),
TotalAmount = 0.010000000000000000000000000000M,
Description = null,
PaymentSN = "",
PayedOn = DateTime.Parse("2018-08-20 20:36:35.720525"),
CanceledOn = null,
PaymentUrl = "https://openapi.xxx?charset=UTF-8&app_id=zzz&version=1.0"
}; // 新增一条数据: AlipayPaymentRecord
var res15 = await Conn.CreateAsync(m15);
以 MySQL 为例,生成 SQL 如下:
insert into `AlipayPaymentRecord`
(`Id`,`CreatedOn`,`PaymentRecordId`,`OrderId`,`TotalAmount`,`Description`,`PaymentSN`,`PayedOn`,`CanceledOn`,`PaymentUrl`)
values
(?Id_2,?CreatedOn_3,?PaymentRecordId_4,?OrderId_5,?TotalAmount_6,
5 ?Description_7,?PaymentSN_8,?PayedOn_9,?CanceledOn_10,?PaymentUrl_11);
4.删除一条数据:
var pk = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d"); // 删除一条数据: AlipayPaymentRecord
await Conn.DeleteAsync<AlipayPaymentRecord>(it=>it.Id==pk);
以 MySQL 为例,生成 SQL 如下:
delete
from `AlipayPaymentRecord`
where `Id`=?Id_1;
5.修改一条数据:
var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d"); // 修改一条数据: AlipayPaymentRecord
var res1 = await Conn.UpdateAsync<AlipayPaymentRecord>(it=>it.Id==pk1, new // where 条件: it=>it.Id==pk1
{
Description = "new desc", // 修改 AlipayPaymentRecord 字段 Description 的值为: "new desc"
PaymentUrl = "new url" // 修改 AlipayPaymentRecord 字段 PaymentUrl 的值为: "new url"
});
以 MySQL 为例,生成 SQL 如下:
update `AlipayPaymentRecord`
set `Description`=?Description_1,
`PaymentUrl`=?PaymentUrl_2
where `Id`=?Id_3;
6.单表 查询一条数据:
var pk1 = Guid.Parse("8f2cbb64-8356-4482-88ee-016558c05b2d"); // 查询一条数据: AlipayPaymentRecord
var res11 = await Conn.QueryOneAsync<AlipayPaymentRecord>(it=>it.Id==pk1);
以 MySQL 为例,生成 SQL 如下:
select *
from `AlipayPaymentRecord`
where `Id`=?Id_1
limit 0,1;
7.多表连接 查询一组数据:
var res4 = await Conn
.Queryer(out AspnetUsers user4, out AspnetUserRoles userRole4, out AspnetRoles role4)
.From(() => user4)
.InnerJoin(() => userRole4)
.On(() => user4.Id == userRole4.UserId)
.InnerJoin(() => role4)
.On(() => userRole4.RoleId == role4.Id)
.Where(() => user4.NickName.StartsWith("刘"))
.OrderBy(() => user4.UserName)
.ThenOrderBy(() => user4.AgentLevel, OrderByEnum.Asc)
.QueryListAsync<AspnetUsers>();
以 MySQL 为例,生成 SQL 如下:
select user4.`*`
from `AspNetUsers` as user4
inner join AspNetUserRoles as userRole4
on user4.`Id`=userRole4.`UserId`
inner join AspNetRoles as role4
on userRole4.`RoleId`=role4.`Id`
where user4.`NickName` like ?NickName_6
order by user4.`UserName` desc ,user4.`AgentLevel` asc ;
8.与表对应的 Model 如下:
/*
* CREATE TABLE `alipaypaymentrecord` (
* `Id` char(36) NOT NULL,
* `CreatedOn` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
* `PaymentRecordId` char(36) NOT NULL,
* `OrderId` char(36) NOT NULL,
* `TotalAmount` decimal(65,30) NOT NULL,
* `Description` longtext,
* `PaymentSN` longtext,
* `PayedOn` datetime(6) DEFAULT NULL,
* `CanceledOn` datetime(6) DEFAULT NULL,
* `PaymentUrl` longtext,
* PRIMARY KEY (`Id`)
*) ENGINE=InnoDB DEFAULT CHARSET=utf8
*/
[XTable(Name = "AlipayPaymentRecord")] // XTableAttribute 指明 该 Model 对应 DB 中的 table 名.
public class AlipayPaymentRecord
{
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
public Guid PaymentRecordId { get; set; }
public Guid OrderId { get; set; }
public decimal TotalAmount { get; set; }
public string Description { get; set; }
public string PaymentSN { get; set; }
public DateTime? PayedOn { get; set; }
public DateTime? CanceledOn { get; set; }
public string PaymentUrl { get; set; }
}
9.快速查看 语句 对应生成的 SQL,如下:
在 VS 输出 窗口 可以看到 语句执行前 对应 生成 的 参数化 SQL 例如 -- 新增如下:
如果你喜欢这个平台框架,别忘了在 Github 上给点个 Star(星) 啊~~
蒙
2018-10-22 18:30 周一
2018-11-18 16:53 周日
2018-12-27 21:30 周四
2019-02-07 23:55 周四
2019-02-24 17:38 周日
2019-04-12 17:56 周五
2019-05-05 15:38 周日
2019-05-20 17:50 周一
最新文章
- maven nexus私服搭建,特别痛苦!!
- iOS移动下上传图片失败解决 (上传多图,带其他参数)
- silverlight ListBox 多列图片效果
- Java Blocking Queue
- Hbase之插入数据
- 为C# Windows服务添加安装程序
- Bean不同配置方式比较
- poj1458 求最长公共子序列 经典DP
- Web中的性能优化
- 在vc正在使用xtremetoolkit接口库-----使用简单的控制
- js中百分比运算,大型数据会算错
- css修改浏览器默认的滚动条样式
- js_base_note
- 【vue】饿了么项目的相关笔记链接
- java日志的相关配置文件知识
- meta标签大全(荐)
- 深度学习框架caffe/CNTK/Tensorflow/Theano/Torch的对比
- 源码安装mysql5.6x启动报错:[ERROR] Can&#39;t find messagefile &#39;/data/mysqldata/3306/english/errmsg.sys&#39;
- 【字符串】Simplify Path(栈)
- 最新的CocoaPods 安装及使用
热门文章
- SpringBoot当中如何整合mybatis和注入
- openlayers4 入门开发系列之地图标绘篇(附源码下载)
- ArcGIS JS API多线程克里金插值
- 批量插入一张表的数据,并且生成不同的uuid 字符截取 批量更新 去除重复数据
- 【Spring源码分析系列】ApplicationContext 相关接口架构分析
- java常用工具(jps等)说明
- Python爬虫10-页面解析数据提取思路方法与简单正则应用
- 微信小程序报错,不在以下 request 合法域名列表中(引起的探索)
- 【视频】ASP.NET Core MVC 2.* 入门
- 又拍云张聪:OpenResty 动态流控的几种姿势