ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ハイブリッド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"));
}
}