38. ・これだけで各種 API をすぐに使えます
!
!
!
!
!
!
!
!
最初の Model(3)
! // Insert!
! val id: Long = Member.createWithAttributes('name -> “JJUG")!
! // insert into member (name) values ('JJUG')!
!
! // Finder API!
! val ms: Seq[Member] = Member.findAll()!
! // select m.id as i_on_m, m.name as n_on_m from member m order by m.id;!
!
! // Querying API!
! val ms: Seq[Member] = Member.where(‘name -> “JJUG").apply()!
! // from member m where m.name = ‘JJUG'!
!
! // ScalikeJDBC QueryDSL!
! val m = Member.defaultAlias!
! val mopt: Option[Member] = Member.findBy(sqls.eq(m.name, "JJUG"))!
! // from member m where m.name = ‘JJUG'
39. ・さらに country テーブルを追加して model を二つ
に増やして・・
!
!
!
!
!
!
!
最初の Model(4)
! case class Member(id: Long, name: Option[String])!
! object Member extends SkinnyCRUDMapper[Member] {!
! lazy val defaultAlias = createAlias(“m”)!
! def extract(rs: WrappedResultSet, m: ResultName[Member] =!
! new Member(rs.get(m.id), rs.get(m.name))!
! }!
!
! // create table country(id serial, name varchar(128) not null);!
! object class Country(id: Long, name: String)!
! object Country extends SkinnyCRUDMapper[Country] {!
! lazy val defaultAlias = createAlias(“m”)!
! def extract(rs: WrappedResultSet, c: ResultName[Country] =!
! new Country(rs.get(c.id), rs.get(c.name))!
! }
41. ・#joins で設定した association を解決した query
を実行します
!
!
!
!
!
!
!
!
最初の Model(6)
! // Insert!
! val countryId: Long = Country.createWithAttributes('name -> “Japan”)!
! val id = Member.createWithAttributes(!
! ‘name -> “JJUG”, ‘countryId -> countryId)!
!
! // member だけ!
! val m = Member.findById(id)!
! // from member m where m.id = ?!
!
! // country も!
! Member.joins(Member.country).findById(id)!
! // from member m left join country c on m.country_id = c.id where m.id = ?!