9.16 Sql 模板

9.16.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.16.2 Sql 模板优缺点#

9.16.2.1 优点#

  • 支持 Sql 动态配置,可在程序运行时动态调配 Sql 语句
  • 支持程序 Sql 语句加密

9.16.2.2 缺点#

  • 需增加对应配置文件
  • 不容易调试 Sql 代码

9.16.3 如何使用#

在执行 Sql 的时候,只需要填写指定模板即可。

9.16.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.16.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.16.4 Sql 模板配置#

9.16.4.1 普通模式#

{
"Select.User": "select * from User"
}

9.16.4.2 更多配置#

{
"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.16.5 反馈与建议#

与我们交流

给 Furion 提 Issue