๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น๊ณต๋ทฐ/flutter

flutter Drift ํ”Œ๋กœ๊ทธ์ธ ์‚ฌ์šฉํ•ด์„œ orm์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌํ•˜๊ธฐ

by ์ด๋…ธํ‚ค_ 2023. 9. 17.

Drift

์ง์ ‘ sql ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 

ORM(Object Relational Mapping, ORM) ์ ์šฉ๋˜์–ด์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ

ํ…Œ์ด๋ธ”์„ ํด๋ž˜์Šค๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ๋‹คํŠธ ์–ธ์–ด๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋“œ๋ฆฌํ”„ํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ํ…Œ์ด๋ธ”๊ณผ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์คŒ.

 

1. ํ…Œ์ด๋ธ” ์ƒ์„ฑ

 

SQL

create table student(
	id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR NOT NULL,
    age INT DEFAULT 14,
    score INT NOT NULL
)

Drift

class Student extends Table{
	IntColumn get id => integer.autoIncrement()();
    TextColumn get name => text()();
    IntColumn get age => integer.withDefault(const Constant(14))();
    IntColumn get score => integer().nullable()();
}

2. Insert

SQL

INSERT INTO student (name, age, score)
values ('leenoki', 15, 500);

Drift

Futrue<int> addStudent(){
	return into(student).insert(
    	Student(
        	name: Value('leenoki'),
            age: Value(15),
            score: Value(500),
        ),
    );
}

 

3. select

SQL

SELECT * FROM student where id = 1;

Drift

Future<Student> getStudent(){
	return (select(student)..where((t)=> t.id.equals(1))).getSingle();
}

4. update

SQL

update student set score = 455 where id = 1;

Drift

Future<int> updateStudent(){
	return(
    	update(student)..where( (t) => t.id.equals(1),))
        .write(StudentCompanion(score: Value(455),),
    );
}

 

5. Delete

SQL

delete from student where id = 1;

Drift

Future<int> deleteStudent(){
	return( delete(student)..where( (t)=> t.id.equals(1))).go();
}

 

๋Œ“๊ธ€