- Dapper原生支持
IN()查询,不需要手动拼接逗号字符串。 - 规则:参数传入数组/集合List,Dapper自动展开生成IN条件。
- SQL写法固定:
WHERE Id IN @ids,不要额外加括号,错误写法IN (@ids)。 - 优势:全程参数化,杜绝SQL注入风险。
例子
using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;
static void Main(string[] args)
{
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
using (IDbConnection db = new MySqlConnection(connStr))
{
string sql = "SELECT * FROM student WHERE Id IN @ids";
// 支持 int[]数组 / List<int>
int[] idArray = {3,4};
List<Student> studentList = db.Query<Student>(
sql,
new { ids = idArray }
).ToList();
}
}Code language: JavaScript (javascript)
两种参数写法都可行
// 方式1:数组(原图示例)
new { ids = new int[] {3,4} }
// 方式2:List集合(项目更常用)
new { ids = new List<int> {3,4,5} }Code language: PHP (php)
Delete批量删除
string sqlDelete = "DELETE FROM student WHERE Id IN @ids";
int rows = db.Execute(sqlDelete, new { ids = new int[]{2,5} });Code language: JavaScript (javascript)
多条件IN查询
string sql = "SELECT * FROM student WHERE Id IN @ids AND Email IN @emails";
var param = new
{
ids = new int[]{1,2},
emails = new string[]{"a@gmail.com","b@gmail.com"}
};
var list = db.Query<Student>(sql, param).ToList();Code language: PHP (php)
Previous: Dapper 存储过程
Next: 多语句操作