Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case class User(id: Long, name: String, createdAt: Instant, updatedAt: Instant)
- object User {
- implicit val rowMapper: RowMapper[User] =
- new RowMapper[User] {
- override def mapRow(rs: ResultSet): User =
- User(
- rs.getLong("id"),
- rs.getString("name"),
- rs.getInstant("created_at"),
- rs.getInstant("updated_at")
- )
- }
- }
- object Main extends App {
- import com.libmacro.molder.syntax._
- MySQLConnectorJava.initialize()
- val config = new HikariConfig()
- config.setJdbcUrl("jdbc:mysql://localhost:3306/molder")
- config.setUsername("molder")
- config.setPassword("molder")
- val dataSource = new HikariDataSource(config)
- val db = Database(dataSource)
- db.execute(
- DDLQuery
- .Builder(
- """
- |CREATE TABLE IF NOT EXISTS `user`(
- | `id` bigint unsigned NOT NULL AUTO_INCREMENT,
- | `name` varchar(255) NOT NULL,
- | `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- | `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
- | PRIMARY KEY (`id`)
- |) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
- """.stripMargin)
- .build()
- )
- println(
- db.select[User](
- SelectQuery
- .Builder("SELECT * FROM user WHERE id = ?")
- .withParams(1L.asSQL)
- .build()
- )
- )
- println(
- db.selectList[User](
- SelectQuery
- .Builder("SELECT * FROM user")
- .build()
- )
- )
- val userIds = (1 to 4).toVector
- println(
- db.selectList[User](
- SelectQuery
- .Builder(s"SELECT * FROM user WHERE id IN ${userIds.asPlaceHolders}")
- .withParams(userIds.map(_.asSQL):_*)
- .build()
- )
- )
- println(
- db.update(
- UpdateQuery
- .Builder("UPDATE user SET name = ? WHERE id = ?")
- .withParams("db".asSQL, 2L.asSQL)
- .build()
- )
- )
- println(
- db.insert(
- InsertQuery
- .Builder("INSERT INTO user(name) VALUES(?)")
- .withParams("bob".asSQL)
- .withReturnGeneratedKeys()
- .build()
- )
- )
- println(
- db.delete(
- DeleteQuery
- .Builder("DELETE FROM user WHERE name = ?")
- .withParams("bob".asSQL)
- .build()
- )
- )
- }
Add Comment
Please, Sign In to add comment