func SelectData(search Book) ([]Book, error) {
// goqu 사용
var result []Book
dbms := goqu.New("sqlite3", db)
ds := dbms.From(tableName).Select(&Book{})
err := ds.ScanStructs(&result)
if err != nil {
log.Println("ds: ", err.Error())
return nil, err
}
// 날쿼리 & 날스캔
sql := ""
sql += `
SELECT
IDX, NAME, PRICE, AUTHOR, ISBN
FROM #TABLE_NAME
`
sql = strings.ReplaceAll(sql, "#TABLE_NAME", tableName)
rows, err := db.Query(sql)
if err != nil {
return nil, err
}
for rows.Next() {
var b Book
err = rows.Scan(&b.Idx, &b.Name, &b.Price, &b.Author, &b.ISBN)
if err != nil {
return nil, err
}
result = append(result, b)
}
return result, nil
}
쿼리보다는 rows 스캔이 짜증났었는데 조금이라도 편해지려면 쿼리빌더든 orm이든 쓰는 쪽으로 습관을 들이는게 좋겠다.
끝.
-----------------------------------------------------------------------------
https://www.ajostrow.me/articles/tiny-orm
날쿼리에 스캔만 이런식으로 가는 것도 좋아 보인다.
진짜 끝.
Go는 라이브러리가 유지보수가 잘 안돼서 5k 넘어가는 거 아니면 아예 안 쓰게 됨 sqlc 익숙해지는 중
쿼리문은 크게 부담이 없는데 scan이 문제네영 ㅎ