MyBatis:グローバルパラメーターにXML Configを使用してMapperインターフェイスを使用する

StackOverflow https://stackoverflow.com/questions/4264485

  •  27-09-2019
  •  | 
  •  

質問

接続文字列などのグローバルパラメーターを指定するためのXML表記が好きです。私もマッパーアノテーションが好きです。 2つを組み合わせようとすると、 この例外.

2つを組み合わせる方法はありますか?グローバル構成にXMLファイルを使用したいのですが、MyBatisにマッパーインターフェイスを考慮してもらいたいと思います。

問題は、sqlSessionFactoryBuilder()。build()が読者(XML構成を渡すために使用する)または構成オブジェクト(私が見ることがあると思う)を取得することです。 addMappers() 私を助けることができる方法) - しかし、私は2つを組み合わせる方法を理解していません。

役に立ちましたか?

解決

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

他のヒント

あなたが作成するとき マッパーインターフェイス 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);

私は同じ問題を抱えていましたが、MyBatis Mapperファイルの名前スペースとMapperインターフェイスのパッケージが一致していなかったためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top