介紹 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提供了大量的特性來提升開發者的效率。