2010-11-24 18 views
12

私は、接続文字列などのグローバルパラメータを指定するXML表記が好きです。私はMapperアノテーションも好きです。私が2つを組み合わせると、this exceptionが得られます。mybatis:グローバルパラメータ用のXML設定でのマッパーインターフェイスの使用

2つを組み合わせる方法はありますか?私は、グローバル設定にXMLファイルを使用したいと思いますが、mybatisにMapperインターフェースを考慮させてください。

問題は、SqlSessionFactoryBuilder()。build()がReader(XML設定を渡すために使用したい)またはConfigurationオブジェクト(これは私に役立つaddMappers()メソッドを持っています)です。私は2つの方法を組み合わせる方法を理解していません。

+0

私は本当にこれを知りたいです!マッパーインターフェイスを手動で追加することは適切な解決策ではありません。マッパーをXMLで構成し、手で追加せずにMapperInterfacesを一緒に使用するにはどうすればよいですか? – Chris

答えて

9

factory.getConfiguration().addMapper(...);

0

MyBatisのマッパーファイル内の名前空間とマッパーインタフェースのパッケージがマッチングなかったので、私は同じ問題を持っていたとしました。

5

マッパーインターフェイスを作成するときは、xmlのSQLと同じメソッドシグネチャを持つ抽象メソッドを使用します。

たとえば、これは、実際のクエリを含むdao.xmlの名前空間でした。

<mapper namespace=" com.mybatis.dao.EntityMapperInterface"> 
    <select id="selectEmployeeWithId" parameterType="Long" 
     resultType="com.mybatis.domain.Employee"> 
     select id,name from employee where 1=1 
     <if test="_parameter != null"> 
      AND id=#{id} 
     </if> 
     order by id 
    </select> 

それは、インタフェースcom.mybatis.dao.EntityMapperInterface

public interface EntityMapperInterface { 
    public List<Employee> selectEmployeeWithId(Long id); 

MyBatisの-configファイル

<mappers> 
    <mapper resource="com/mybatis/mappers/EntityMapper.xml" /> 
</mappers> 

どのようにuはからそれを呼び出すかにマッピングされますアクションクラス/サーブレット? SqlSessionを初期化したとき、

EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class); 
List eList = emi.selectEmployeeWithId(1); 
関連する問題