私は理解しようとしているコードを継承しています。何かを探すために何かを探すのは@SelectProvider
です。@SelectProviderのmybatisパラメータの置換はどのように機能しますか
JavaのDAO
@SelectProvider(type = CategoryDaoSelectProvider.class, method = "findByParentIdAndName")
Category findByParentIdAndName(@Param("parentId") Long parentId, @Param("name") String name);
を選択プロバイダー
public class CategoryDaoSelectProvider {
public static String findByParentIdAndName(Map<String, Object> params) {
Long parentId = (Long)params.get("parentId"); // WHY IS THIS HERE???
StringBuffer buffer = new StringBuffer();
buffer.append("SELECT COUNT(id) FROM Category ");
if (parentId == null) {
buffer.append("WHERE parentId IS NULL ");
} else {
buffer.append("WHERE parentId = #{parentId} ");
}
buffer.append("AND LOWER(name) = LOWER(#{name}) ");
return buffer.toString();
}
}
のparam PARENTIDは、このコードではどのような目的を果たしていますか? #{parentId}が魔法のように値で置き換えられない限り、実際には何もしません。このパラメータはこの状況では使用されていませんか? mybatis
は実際にクエリに注入されますか?
私はあなたが言っていることを理解しています...私が尋ねた行は何もしていないということを読んでいる人を指摘したいだけです。 parentIdの値を取得しますが、何もしません。このコードでは、このコード行は意味がありません。 – kasdega