9.17 Sql 模板
9.17.1 Sql
模板
通常我们程序中执行数据库的 sql
语句都写在了程序集中,随程序一起编译,后续需要修改,则重新编译代码。
所以,Furion
推出一种 Sql
模板的方式,程序执行 Sql
时,只需要使用特殊标记即可:#(模板Key)
,这些真实的 Sql
配置在 .json
或 .xml
配置文件中。
如:
- Json 方式
{
"Select.User": "select * from User where id > @id"
}
- Xml 方式
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<Select.User>select * from User where id > @id</Select.User>
</configuration>
9.17.2 Sql
模板优缺点
9.17.2.1 优点
- 支持
Sql
动态配置,可在程序运行时动态调配Sql
语句 - 支持程序
Sql
语句加密
9.17.2.2 缺点
- 需增加对应配置文件
- 不容易调试
Sql
代码
9.17.3 如何使用
在执行 Sql
的时候,只需要填写指定模板即可。
9.17.3.1 常规使用
// 仓储方式
var users = repository.SqlQuery<User>("#(Select.User)", new { id = 1});
// 懒人方式
var users = "#(Select.User)".SqlQuery<User>(new { id = 1});
// Sql 代理方式
[SqlExecute("#(Select.User)")]
List<User> GetUser(int id);
9.17.3.2 高级嵌套
var users = repository.SqlQuery<User>(
@"select * from user u
left join #(User.Detail) d on u.Id = d.UserId
where id > @id");
9.17.4 Sql
模板配置
9.17.4.1 普通模式
{
"Select.User": "select * from User"
}
9.17.4.2 更多配置
功能移除声明
以下内容在 Furion 2.13 +
版本中已移除。
{
"Select.User": {
"Sql": "select * from User where id > @id and Name = @name",
"Params": [
{
"Name": " Id",
"Value": "1",
"DbType": "Int16",
"Size": 10
},
{
"Name": " Name",
"Value": "百小僧",
"DbType": "String",
"Size": 10
}
]
}
}
9.17.5 反馈与建议
与我们交流
给 Furion 提 Issue。