Dapper字符串类型参数传递(sql-like运算符)

请查看官网代码示例:

https://www.w3cschool.cn/dapperorm/dapperorm-vdxn31fj.html

1 var sql = "SELECT * FROM Invoice WHERE Code = @Code;";
2 using (var connection = My.ConnectionFactory())
3 {
4     connection.Open();
5     var invoices = connection.Query<Invoice>(sql, new {Code = new DbString {Value = "Invoice_1", IsFixedLength = false, Length = 9, IsAnsi = true}}).ToList();
6     My.Result.Show(invoices);
7 }

sql语句当中的Code参数是进行精确查找的,所以Dapper Query方法当中为@Code参数使用DbString(Dapper.DbString类型)来封装,如果sql语句如下,在sql语句中使用like运算符进行表字段关键词的模糊匹配

var sql = "SELECT * FROM Invoice WHERE Code like @Code";

则Dapper Query方法映射sql-like运算操作的查询参数时(不使用sql语句拼接的方式,防止sql注入),则示例代码如下所示:

string value = $"%{code}%"
var sql = "SELECT * FROM Invoice WHERE Code = @Code;";
using (var connection = My.ConnectionFactory())
{
    connection.Open();
    var invoices = connection.Query<Invoice>(sql, 
    new {
                Code = new DbString
              {
                   Value = value, 
                   IsFixedLength = false,    
                   Length = value.Length, 
                   IsAnsi = true
              }
      }).ToList();
    My.Result.Show(invoices);
}                                

声明一个变量value,用于存放sql-like '%key%'匹配字符串的占位符即可

 

posted @ 2021-03-10 19:04  某科学的IT渣  阅读(412)  评论(0)    收藏  举报