Adapper 入门
特点
- 单实体实现自动装配。连表查询需要自己处理装配,查看查询。
- 原生sql语句。
连接接口:
IDbConnection connection = new SqlConnection("Data Source=.;Initial Catalog=DapperDB;Integrated Security=True;MultipleActiveResultSets=True");
方法:
Execute()
- //插入
- var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",new {UserName = "jack", Email = "380234234@qq.com", Address = "上海"});
- //批量插入
- var usersList = Enumerable.Range(0, 10).Select(i => new Users()
- {
- Email = i + "qq.com",
- Address = "安徽",
- UserName = i + "jack"
- });
-
- var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)", usersList);
- //更新
- var result = connection.Execute("update Users set UserName='Merry' where UserID=@UserID", new {UserID = 1});
- //删除
- var result = connection.Execute("delete from Users where UserID=@UserID", new {UserID = 1});
Query<T>()
- //查询 自动装配实体User
- var query = connection.Query<Users>("select * from Users where UserName=@UserName", new {UserName = "jack"});
- return query;
- //带in的查询
- var sql = "select * from Users where Email in @emails";
- var info = connection.Query<Users>(sql, new {emails = new string[2] {"5qq.com", "7qq.com"}});
- //连表查询
- var sql = @"select * from Product as p
- join Users as u
- on p.UserID = u.UserID
- ";
- //下面一句返回
- //System.Collections.Generic.IEnumerable<dynamic> {System.Collections.Generic.List<Dapper.SqlMapper.DapperRow>}
- //var result = connection.Query(sql);
- //返回product对象
- var result = connection.Query<Product, Users, Product>(sql,
- (product, users) =>
- {
- product.UserOwner = users;
- return product;
- }, splitOn: "UserName");
- //spliton 对应要查询连接表要查询的字段
MultiStatement()
- //返回多个结果
- var sql = "select * from Product; select * from Users";
- var multiReader = connection.QueryMultiple(sql);
- var productList = multiReader.Read<Product>();
- var userList = multiReader.Read<Users>();
- multiReader.Dispose();