SmartSql 介紹

来源:https://www.cnblogs.com/Ahoo-Wang/archive/2019/04/11/SmartSql-intro.html
-Advertisement-
Play Games

介紹 SmartSql = MyBatis + Cache(Memory | Redis) + R/W Splitting +Dynamic Repository + Diagnostics ...... 她是如何工作的? SmartSql 借鑒了MyBatis的思想,使用XML來管理SQL,並且提 ...


介紹

SmartSql = MyBatis + Cache(Memory | Redis) + R/W Splitting +Dynamic Repository + Diagnostics ......

她是如何工作的?

SmartSql 借鑒了MyBatis的思想,使用XML來管理SQL,並且提供了若幹個篩選器標簽來消除代碼層面的各種if/else的判斷分支。

SmartSql將管理你的SQL,並且通過篩選標簽來維護本來你在代碼層面的各種條件判斷,使你的代碼更加優美。

同時SmartSql還提供了以下各種特性(包括但不限於):

  • 動態代理倉儲
  • 分散式緩存
  • 類型處理器
  • 自動生成 CUD 代碼
  • Id生成器
  • 性能診斷
  • AOP 級別的事物
  • 緩存(記憶體,分散式緩存)
  • 讀寫分離
  • 代碼生成器(https://github.com/dotnetcore/SmartCode)
  • 高性能的批量插入

為什麼選擇SmartSql?

DotNet 體系下大都是Linq系的ORM,Linq很好,消除了開發人員對SQL的依賴。但卻忽視了一點,SQL本身並不複雜,而且在複雜查詢場景當中開發人員很難通過編寫Linq來生成良好性能的SQL,相信使用過EF的同學一定有這樣的體驗:“我想好了Sql怎麼寫,然後再來寫Linq,完了可能還要再查看一下Linq輸出的Sql是什麼樣的“。這是非常糟糕的體驗。要想對Sql做絕對的優化,那麼開發者必須對Sql有絕對的控制權。另外Sql本身很簡單,為何要增加一層翻譯器呢?

那麼為什麼不是Dapper,或者DbHelper?

Dapper 確實很好,並且又很好的性能,但是會讓給你的代碼裡邊充斥著SQL和各種判斷分支,這些將會使代碼維護難以閱讀和維護。另外 Dapper 只提供了DataReader到Entity的反序列化功能。而SmartSql提供了大量的特性來提升開發者的效率。

Nuget Packages

Package NuGet Stable Downloads
SmartSql SmartSql SmartSql
SmartSql.Schema SmartSql.Schema SmartSql.Schema
SmartSql.TypeHandler SmartSql.TypeHandler SmartSql.TypeHandler
SmartSql.DyRepository SmartSql.DyRepository SmartSql.DyRepository
SmartSql.DIExtension SmartSql.DIExtension SmartSql.DIExtension
SmartSql.Cache.Redis SmartSql.Cache.Redis SmartSql.Cache.Redis
SmartSql.ScriptTag SmartSql.ScriptTag SmartSql.ScriptTag
SmartSql.AOP SmartSql.AOP SmartSql.AOP
SmartSql.Options SmartSql.Options SmartSql.Options
SmartSql.Bulk SmartSql.Bulk SmartSql.Bulk
SmartSql.Bulk.SqlServer SmartSql.Bulk.SqlServer SmartSql.Bulk.SqlServer
SmartSql.Bulk.PostgreSql SmartSql.Bulk.PostgreSql SmartSql.Bulk.PostgreSql
SmartSql.Bulk.MySql SmartSql.Bulk.MySql SmartSql.Bulk.MySql

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • static可以修飾變數,修飾的變數直接屬於某各類,不局限於某個方法,無法在成員方法中修飾變數,也不可以在靜態方法中修飾變數。被static修飾的方法屬於靜態方法(類方法),與對象無關,與類有關。final可以修飾類、變數、方法,abstract可以修飾類,方法;final與abstract不能同時 ...
  • 1122. 音樂節拍 (Standard IO) 時間限制: 1000 ms 空間限制: 262144 KB 具體限制 1122. 音樂節拍 (Standard IO) 時間限制: 1000 ms 空間限制: 262144 KB 具體限制 1122. 音樂節拍 (Standard IO) 時間限制: ...
  • ChromeDriver版本支持的Chrome版本 v2.46 v72-74 v2.45 v71-73 v2.44 v70-72 v2.43 v69-71 v2.42 v68-70 v2.41 v67-69 v2.40 v66-68 v2.39 v66-68 v2.38 v65-67 v2.37 v ...
  • 今天老師講了一天狗跳樓的問題,昨天解開始說了,今天都沒講新課, 所以,今天自學了Scanner類及String的類型轉換 先來Scanner類實現鍵盤輸入功能: 代碼: package pkg1; import java.util.Scanner; public class Test{ public ...
  • 神奇的老師在網上看到狗跳樓的視頻然後就想到拋物線問題; 還是 屬性和方法的調用: package sklx; public class Dog{ private float v = 30.0f; private float g = 9.8f; //水平方向本質就是勻速直線運動 public floa ...
  • 一.概述 在物理層之間相互通信必須保護資源,需要實現身份驗證和授權,通常針對同一個用戶存儲。對於資源安全設計包括二個部分,一個是認證,一個是API訪問。 1 認證 認證是指:應用程式需要知道當前用戶的身份時,需要進行身份驗證,確定用戶是否有效。最常見的身份驗證協議是SAML2p,WS-Federat ...
  • 受微軟美女員工 Grace Peng 邀請(也可能是套路???),參加微軟神經語音(沒錯,就是神經)曉曉的試用,首先是看到了群裡面的消息,然後就是發送申請,等待回覆,過了幾天後,收到了一個機器人發來的賬號密碼,告訴我已經幫我申請了免費試用的賬號,直接登錄即可使用了。其實一直都有接觸各種 TTS 的服... ...
  • 介紹 由於歷史原因,基於 Windows 平臺存在著大量的基於 .NetFramework 開發的 WPF 和 WinForm 相關程式,如果將這些程式全部基於 DotNetCore 3.0 重寫一遍顯然是不現實的,但是 DotNetCore 是未來發展的趨勢。所以本文通過以 WPF 為例,介紹一下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...