MyBatisは複数のパラメータを渡す

2285 ワード

方式一mapインタフェースを用いてパラメータを伝達する
mybatisではmapインタフェースがキー値ペアで複数のパラメータを渡すことを許可し、インタフェースメソッドをpublic List findRolesByMap(Map paramenterMap);
このとき、マッパーに渡されるのはmapオブジェクトで、SQLで対応するパラメータを設定します.


なお、パラメータroleNameとnoteは、mapのキー、すなわち、パラメータを次のように渡す必要がある.
RoleMapper roleMapper=sqlSession.getMapper(RoleMapper.class);
Map paramenterMap=new HashMap();
parameterMap.put("roleName","1");
parameterMap.put("note","1");
List roles=roleMapper.findRolesByMap(parameterMap);

方式2注釈を使用して複数のパラメータを渡す
Mapは複数のパラメータを伝達するのに1つの弊害がある:可読性が悪い.このためMyBatisは開発者に注記@Param(org.apache.ibatis.annotations.Param;)を提供し、マッパーのパラメータ名を定義することで、インタフェースメソッドをより読み取りやすく定義することができます.
public List findRoleByAnnotation(@Param("roleName)String rolename,@Param("note") String note);

このとき、コードの可読性が大幅に向上し、ユーザーはパラメータroleNameがロール名であることを明確にすることができ、noteは注釈であり、一目瞭然であり、この場合、マッピングファイルのコードを修正する必要がある:


注意:この場合、parameterTypeプロパティを与える必要はありません.MyBatisが自動的に検索できるようにします.
方式3 JavaBeanを介して複数のパラメータを渡し、まず1つのパラメータを定義するPOJO-RoleParams
public class RoleParams{
private String roleName;
private String note;
/**setter and getter**/
}


インタフェースメソッドを次のように定義します.
public List findRolesByBean(RoleParams,roleParam);

JavaBeanのプロパティroleNameはロール名を表し、noteは注釈マッピングファイルを表します.