Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View nakamura-to's full-sized avatar

Toshihiro Nakamura nakamura-to

View GitHub Profile
@nakamura-to
nakamura-to / doma2_draft.md
Last active February 4, 2023 21:28
Doma 2 素案

Doma 2 素案

この文書は、今後 Doma 2 を開発していくにあたり、新規追加する機能について作者の考えを述べたものです。

前提

  • Doma は Annotation Processing Tool (apt) を利用した Java の Dao フレームワークである
  • Doma 1 を Java 6 で開発してきたが、Java 8 への対応に伴い Doma 2 へメジャーバージョンアップする
  • サポートする Java のバージョンは 8 以上とする
@nakamura-to
nakamura-to / ContextualAbstractions.kt
Created May 31, 2022 14:21
KotlinでScala3のContextual Abstractionsみたいなもの
// 下記の記事の最後のコード例をKotlinで書いてみた
// https://zenn.dev/hinastory/articles/c8d5267ea43ed6
package hello.kotlin
data class Person(val name: String, val age: Int)
data class Japanese(val name: String, val age: Int, val info: String)
interface CanGreet<T> {
fun T.hello()
@nakamura-to
nakamura-to / Db.cs
Created October 3, 2012 21:54
Simple DB access in C#
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
namespace DbConsole
{
public class Db
@nakamura-to
nakamura-to / WebApiConfig.cs
Created November 7, 2012 05:27
ModelMetadata.ConvertEmptyStringToNull in ASP.NET Web API
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
@nakamura-to
nakamura-to / AssociationExample.kt
Created November 3, 2021 14:10
Komapperでエンティティの関連づけを行うAPIの例
val d = Dept.meta
val e = Emp.meta
val query = SqlDsl.from(d).innerJoin(e){ d.id eq e.deptId }.associate(d, e)
val aggregate = db.runQuery { query }
val map: Map<Dept, Set<Emp>> = aggregate.oneToMany(d, e)
@nakamura-to
nakamura-to / Address.java
Last active October 30, 2021 08:50
Domaで@embeddableの代替策
public class Address {
public String ctiy;
public String street;
public Address(String city, String street) {
this.city = ctiy;
this.street = street;
}
}
@nakamura-to
nakamura-to / extension.kt
Created August 18, 2021 14:39
拡張関数の利用範囲を限定する方法
fun String.globalExtension() {
println(this)
}
class Scope {
fun String.narrowExtension() {
println(this)
}
}
@nakamura-to
nakamura-to / where-declaration-composition.kt
Created August 17, 2021 08:25
KomapperでWhere宣言を合成する例
package org.komapper.quickstart
import org.komapper.annotation.KomapperAutoIncrement
import org.komapper.annotation.KomapperEntity
import org.komapper.annotation.KomapperId
import org.komapper.core.dsl.EntityDsl
import org.komapper.core.dsl.SchemaDsl
import org.komapper.core.dsl.expression.ColumnExpression
import org.komapper.core.dsl.scope.WhereDeclaration
import org.komapper.jdbc.JdbcDatabase
@nakamura-to
nakamura-to / raw-string-literals-1.md
Last active November 5, 2020 21:59
Doma 3でJava 11のRaw String Literalsに対応するとしたら

追加するアノテーションを @Sql の1つにする案

Selectの場合

SQLはファイルから読む(暗黙バージョン)

@Select
Emp select();

SQLはファイルから読む(明示バージョン)

package example;
import org.apache.commons.beanutils.expression.DefaultResolver;
public class SafeResolver extends DefaultResolver {
@Override
public String next(String expression) {
String property = super.next(expression);
if ("class".equalsIgnoreCase(property)) {