MyBatis: استخدام واجهات Mapper مع تكوين XML للمعلمات العالمية
سؤال
أحب تدوين 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 لم تكن متطابقة.