MyBatis: استخدام واجهات Mapper مع تكوين XML للمعلمات العالمية

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

  •  27-09-2019
  •  | 
  •  

سؤال

أحب تدوين XML لتحديد المعلمات العالمية مثل سلاسل الاتصال. أنا أيضا أحب التعليقات التوضيحية Mapper. عندما أحاول الجمع بين الاثنين ، أحصل هذا الاستثناء.

هل هناك طريقة للجمع بين الاثنين؟ أرغب في استخدام ملف XML للتكوينات العالمية ، ولكن هل يأخذ MyBatis واجهات Mapper في الاعتبار.

المشكلة هي أن SQLSessionFactoryBuilder (). Build () يأخذ إما قارئ (والذي أريد استخدامه لتمرير تكوين XML) ، أو كائن تكوين (الذي أراه يحتوي على addMappers() الطريقة التي يمكن أن تساعدني) - لكنني لا أفهم كيفية الجمع بين الاثنين.

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

عندما تنشئ واجهة Mapper مع الطرق التجريدية التي لها توقيع الطريقة الدقيقة مثل SQL في XML.

على سبيل المثال. كانت هذه مساحة الاسم ل 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>

كيف تسميها من فئة العمل/servlet؟ عندما يكون لديك تهيئة SQLSession ،

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

واجهت نفس المشكلة وكانت لأن مساحة الاسم في ملف mappate Mappatis وعبقة واجهة Mapper لم تكن متطابقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top