Dapper 삽입 작업
- Dapper는
Execute()확장 메서드를 제공하여 삽입, 수정, 삭제 SQL을 실행하며 영향받은 행 수(int)를 반환합니다. - 삽입 처리 방식: 매개변수 자리 표시자
@매개변수이름가 포함된INSERTSQL을 직접 작성하고 엔티티 객체를 전달해 자동으로 매개변수를 매핑하여 SQL 인젝션을 차단합니다. - 문법 형식:
INSERT INTO 테이블이름(컬럼1,컬럼2...) VALUES(@매개변수1,@매개변수2...)
예제
using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
using System.Collections.Generic;
namespace DapperDemo
{
class Program
{
static void Main(string[] args)
{
// 1.연결 문자열 읽기
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
// 2.using 구문으로 데이터베이스 연결 자동 해제
using (IDbConnection db = new MySqlConnection(connStr))
{
// 3.student 테이블에 삽입할 SQL 작성
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email)";
// 4.엔티티 객체 생성
var stu = new Student()
{
FirstName = "foxdevelop",
LastName = "com",
Email = "admin@foxdevelop.com"
};
// 5.삽입 실행, 영향받은 행 수 반환
int rows = db.Execute(sql, stu);
// 6.조회로 데이터 삽입 확인
List<Student> stuList = db.Query<Student>("SELECT * FROM student").ToList();
}
Console.ReadKey();
}
}
// Student 엔티티 클래스 (속성 이름이 SQL @매개변수 이름과 일치해야 함)
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}Code language: HTML, XML (xml)
설명
- 매개변수 매핑 규칙
Dapper는 엔티티 속성 이름을 기준으로 SQL의@xxx매개변수를 자동으로 매칭합니다. 대소문자는 구분하지 않지만 이름을 동일하게 유지하는 것이 권장됩니다. - Execute 반환값
int rowsAffected = db.Execute(sql, stu);
- 반환값 ≥1: 삽입 성공;
- 반환값 0: 삽입된 데이터가 없음.
- 연결 문자열 설정 (App.config)
<configuration>
<connectionStrings>
<add name="StudentConnection"
connectionString="server=localhost;database=testdb;uid=root;pwd=123456"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>Code language: HTML, XML (xml)
새로 삽입된 자동 증가 기본키 ID 가져오기 (MySQL)
student 테이블에 자동 증가 기본키 Id가 있을 때 새로 추가된 레코드의 ID를 가져오려면:
string sql = @"INSERT INTO student (FirstName, LastName, Email)
VALUES (@FirstName, @LastName, @Email);
SELECT LAST_INSERT_ID();";
long newStudentId = db.ExecuteScalar<long>(sql, stu);Code language: HTML, XML (xml)
삽입