# SqlTemplateClient的執行過程
示例代碼:
~~~
sql_key_4_1 := "select.example.stpl" //模板文件名,SqlTemplate的key
//執行的 sql:select * from user where id=7
//如部分參數未使用,請記得使用對應類型0值,如此處name參數值為空字符串,模板使用指南請詳見pongo2
paramMap_4_1 := map[string]interface{}{"count": 2, "id": 7, "name": ""}
results, err := engine.SqlTemplateClient(sql_key_4_1, ¶mMap_4_1).Query().List()
//執行的 sql:select * from user where name='xormplus'
//如部分參數未使用,請記得使用對應類型0值,如此處id參數值為0,模板使用指南請詳見pongo2
paramMap_4_2 := map[string]interface{}{"id": 0, "count": 0, "name": "xormplus"}
results, err := engine.SqlTemplateClient(sql_key_4_1, ¶mMap_4_2).Query().List()
//執行的 sql:select * from user where name='xormplus'
sql_key_7_1 := "select.example.stpl" //配置文件名,SqlTemplate的key
var users []User
paramMap_7_1 := map[string]interface{}{"id": 0, "count": 0, "name": "xormplus"}
err := engine.SqlTemplateClient(sql_key_7_1, ¶mMap_7_1).Find(&users)
~~~
示例SQL模板:
~~~
select * from user
where
{% if count>1%}
id=?id
{% else%}
name=?name
{% endif %}
~~~
過程說明:
1、SqlTemplateClient函數第二個參數存在時,則按約定需為*map[string]interface{}類型,該參數包含2部分內容,一部分為執行pongo2的SQL模板所需的執行參數,另一部分為通過執行pongo2的SQL模板獲得的預編譯SQL所需的sql參數。
2、SqlTemplateClient函數會執行pongo2的SQL模板獲得的預編譯SQL后,將map參數繼續傳遞給后面的Query,Find,Search,Execute等函數繼續執行預編譯SQL。
3、以示例代碼的第一部分為例,SqlTemplateClient函數,會依據傳入的模板名稱sql_key_4_1找到指定的執行SQL模板,依據傳入的參數paramMap_4_1執行模板,獲得預編譯SQL為`select * from user where id=?`,之后將預編譯SQL和paramMap_4_1傳遞給Query函數執行,最終執行的SQL為`select * from user where id=7`
4、最后請注意不要在SqlTemplate中硬拼接SQL,這樣做存在SQL注入風險,請使用預編譯SQL合理使用SqlTemplate。
- xorm
- 創建Orm引擎
- 定義表結構體
- 名稱映射規則
- 前綴映射,后綴映射和緩存映射
- 使用Table和Tag改變名稱映射
- Column屬性定義
- 表結構操作
- 獲取數據庫信息
- 表操作
- 創建索引和唯一索引
- 同步數據庫結構
- 導入導出SQL腳本
- SqlMap及SqlTemplate模板
- 初始化SqlMap配置文件及SqlTemplate模板
- SqlMap及SqlTemplate相關功能API
- SqlMap配置文件及SqlTemplate模板加密存儲及解析
- 手動管理SqlMap配置及SqlTemplate模板
- 插入數據
- ORM方式插入數據
- 執行SQL命令插入數據
- 創建時間Created
- 查詢和統計數據
- ORM方式查詢和統計數據
- 查詢條件方法
- 臨時開關方法
- Get方法
- Find方法
- Join的使用
- Iterate方法
- Count方法
- Rows方法
- Sum系列方法
- Exist方法
- 子查詢
- 執行SQL查詢
- 執行SQL查詢的11種常用方式
- 查詢返回json或xml字符串
- 鏈式查詢據操返回某條記錄的某個字段的值
- SqlTemplateClient執行過程
- 關于數據庫分頁查詢
- 更新數據
- ORM方式更新數據
- Update方法
- 樂觀鎖Version
- 更新時間Updated
- 執行SQL命令更新數據
- 刪除數據
- ORM方式刪除數據
- Delete方法
- 軟刪除Deleted
- 執行SQL命令刪除數據
- 事務處理
- 簡單事務模型
- 嵌套事務模型
- 八種事務類型及事務傳播機制
- 簡單事務相關API
- 嵌套事務相關API
- 嵌套事務示例代碼
- 主從數據庫(Master/Slave)讀寫分離
- 創建引擎組
- 負載策略
- 引擎組其他配置方法
- 數據庫讀寫分離
- 批量混合SQL操作
- SQL Builder
- 緩存
- 事件
- 數據導出
- Dump數據庫結構和數據
- 查詢結果集導出csv、tsv、xml、json、xlsx、yaml、html
- 多Sheet頁數據導出
- 日志
- 連接池
- xorm 工具
- 常見問題
- 感謝支持