ハイブリッドSQL
なるほど。SQLコメントでSQLデザイナーとプログラマーで分業をやるという。悪乗りしてTapestry的ならこっちか?
SELECT empno, ename FROM emp
WHERE empno = /*S2*/7788/*?{empno}*/とか?トークン内部の一部置き換えはできなくなっちゃいますけど。
ちょっとみにくいけど、置き換えできる範囲を自由に指定できるようになりますね。
動的に変わるSQL文をJavaで自由に組み立てられるようになります。
SELECT empno, ename FROM emp
/*S2*/WHERE job = 'CLERK' AND deptno = 10/*this.hoge()*/
class MyDaoImpl extends S2Dao {
//S2コメントの部分を置き換える
public void hoge(QueryContext ctx) {
//ctx.addSql(String)でSQL文の追加
//ctx.addSql(String sql, Object var)SQLを追加しながら
//バインド変数の追加
//ctx.getArg(String name)で引数の取得
自由にSQL文を組み立てる
ctx.addSql(" WHERE job = ?", ctx.getArg("job"));
ctx.addSql(" AND deptno = ?", ctx.getArg("deptno"));
}
}