🌟
MyBatis GeneratorでCOUNT関数の引数を * から差し替える
高速化出来る場合に実施します。DB次第で速くなったり遅くなったり効果が無かったりするはずです。
MySQL 8.xでは多少速くなりました。
生成SQL
select count(id) from sample;
ソースコード
SampleMapper.count(c ->
c.count(SampleDynamicSqlSupport.id) // 差し替える列名
.from(SampleDynamicSqlSupport.sample) // テーブル指定(冗長)
);
余談
型付けがあるのでMyBatis GeneratorのおかげでO/Rマッピングの安全性(型の一致)が高まっている印象はありますが、SQLで書く場合と比べてやはり記述形式が冗長です。
以前with的なコードをJavaで書けるようにしたので、その方式を使って冗長な情報(this的な文脈情報)は消去したい所です。
冗長性を排除したい場合
SampleMapper.count(c ->
MapperSupport.with(new SampleDynamicSqlSupport(),
s ->
c.count(s.id) // 差し替える列名
.from(s.sample) // テーブル指定(冗長)
)
);
Discussion