Mybatis: Verwenden von Mapper-Schnittstellen mit XML-Konfiguration für globale Parameter

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

  •  27-09-2019
  •  | 
  •  

Frage

Ich mag die XML-Notation globale Parameter wie Verbindungszeichenfolgen für die Angabe. Ich mag auch Mapper Anmerkungen. Wenn ich versuche, die beiden zu kombinieren, erhalte ich diese Ausnahme .

Gibt es eine Möglichkeit, die beiden zu kombinieren? Ich möchte eine XML-Datei für die globalen Konfigurationen verwenden, aber Mybatis nehmen Mapper Schnittstellen zu berücksichtigen haben.

Das Problem ist, dass SqlSessionFactoryBuilder () build () nimmt entweder einen Reader (die ich verwenden möchte, die XML-Konfigurations passieren), oder ein Objekt Konfiguration (die ich sehe die addMappers() Methode, die mir helfen kann.) - aber ich verstehe nicht, wie die beiden zu verbinden.

War es hilfreich?

Lösung

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

Andere Tipps

Wenn u die Mapper Schnittstelle erstellen mit den abstrakten Methoden, um die genaue Methode Signatur wie die SQL in der XML haben.

Für zB. Dies war der Namensraum für die dao.xml, die die eigentliche Abfrage enthalten ist.

<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>

Es wird in der abgebildet werden Schnittstelle com.mybatis.dao.EntityMapperInterface

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

Mybatis-config-Datei

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

Wie nennt u es aus der Action-Klasse / Servlet? Wenn u die SqlSession initialisiert hat,

EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);

Ich hatte das gleiche Problem und war, weil der Name Raum in Mybatis Mapper-Datei und das Paket der Mapper-Schnittstelle wurden nicht passend.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top