تقدم هذه المقالة بشكل أساسي ثلاث طرق تكامل مشتركة بين Spring وMybatis. حزمة إطار التكامل المطلوبة هي mybatis-spring.jar، والتي يمكن الوصول إليها من خلال الرابط
قم بالتنزيل من http://code.google.com/p/mybatis/.
1. باستخدام طريقة مخطط البيانات (MapperFactoryBean)، ليست هناك حاجة لكتابة ملفات تعيين mybatis، ويتم توفير عبارات SQL المقابلة ومعلمات الإدخال باستخدام التعليقات التوضيحية.
(1) ملف تكوين الربيع:
<!--تقديم ملف تكوين jdbc--> <context:property-placeholder location="jdbc.properties"/> <!--إنشاء مصدر بيانات jdbc--> <bean id="dataSource" Destroy-method="إغلاق "> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${اسم المستخدم}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property name="maxActive " value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean> <!--قم بإنشاء SqlSessionFactory وحدد مصدر البيانات-> <bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> </bean> <!--إنشاء البيانات مخطط البيانات، يجب أن يكون مخطط البيانات واجهة --> <bean id="userMapper"> <property name="mapperInterface" value="com.xxt.ibatis.dbcp.dao.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl2"> <property name="userMapper" ref="userMapper"/> </bean>(2) مخطط البيانات UserMapper، الكود كما يلي:
الواجهة العامة UserMapper { @Select("SELECT * FROM user WHERE id = #{userId}") User getUser(@Param("userId") معرف طويل });(3) فئة واجهة داو UserDao، الكود كما يلي:
الواجهة العامة UserDao { public User getUserById(User user });(4) فئة تنفيذ داو UserDaoImpl2، الكود كما يلي:
public class UserDaoImpl2 Each
2. استخدم فئة التنفيذ org.mybatis.spring.SqlSessionTemplate للواجهة org.apache.ibatis.session.SqlSession.
في Mybatis، يمكن إنشاء sessionFactory بواسطة SqlSessionFactoryBuilder.
في MyBatis-Spring، يتم استخدام SqlSessionFactoryBean بدلاً من ذلك.
يحتوي SqlSessionFactoryBean على مصدر بيانات للسمة المطلوبة، وله أيضًا سمة مشتركة configLocation (تُستخدم لتحديد مسار ملف تكوين XML لـ mybatis).
(1) ملف تكوين الربيع:
<!-- أنشئ SqlSessionFactory وحدد مصدر البيانات -->
<bean id="sqlSessionFactory">
<اسم الخاصية = "مصدر البيانات" ref = "مصدر البيانات" />
<!-- حدد ملف التكوين العام لـ sqlMapConfig، ولن تصبح البيئة المخصصة سارية المفعول في حاوية الربيع -->
<property name="configLocation" value="classpath:sqlMapConfig.xml"/>
<!--حدد ملف تعيين فئة الكيان. يمكنك تحديد حزمة معينة وجميع ملفات التكوين ضمن الحزمة الفرعية في نفس الوقت. مطلوب موقع MapperLocations وconfigLocation واحد فقط ، يمكنك تحديد سمة configLocation، ثم استخدام مخطط الخرائط لتقديم ملفات تعيين فئة الكيان في ملف التكوين العام mybatis -->
<!- - <property name="mapperLocations" value="classpath*:com/xxt/ibatis/dbcp/**/*.xml"/> --> -->
<فاصوليا>
(2) ملف التكوين الإجمالي لـ mybatis sqlMapConfig.xml:
<configuration> <typeAliases> <typeAlias type="com.xxt.ibatis.dbcp.domain.User" alias="User" /> </typeAliases> <mappers> <mapper Resources="com/xxt/ibatis/ dbcp/ domain/user.map.xml" /> </mappers> </configuration>
(3) ملف تعيين فئة الكيان user.map.xml:
<mapper namespace = "com.xxt.ibatis.dbcp.domain.User"> <resultMap type = "User" id = "userMap"> <id property = "id" column = "id" /> <result property = " الاسم" العمود = "الاسم" /> <result property = "password" column = "password" /> <result property = "createTime" column = "createtime" /> </resultMap> <select id="getUser" ParameterType="User" resultMap="userMap"> حدد * من المستخدم حيث id = #{id} </select> <mapper/>(4) فئة تنفيذ واجهة طبقة داو UserDaoImpl:
كود جافا
public class UserDaoImpl Implements UserDao { public SqlSessionTemplate sqlSession; public User getUserById(User user) { return (User)sqlSession.selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } public void setSqlSession(); SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession } }3. استخدم الفئة المجردة org.mybatis.spring.support.SqlSessionDaoSupport لتوفير SqlSession.
(1) ملف التكوين الربيعي:
كود جافا
<bean id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:sqlMapConfig.xml"/> <!-- <property name="mapperLocations " value="classpath*:com/xxt/ibatis/dbcp/domain/user.map.xml"/ > --> </bean> <bean id="sqlSession" > <constructor-arg Index="0" ref="sqlSessionFactory" /> </bean> <bean id="userDaoImpl3"> <!--Inject SqlSessionTemplate example--> <property name= "sqlSessionTemplate" ref="sqlSession" /> <!--يمكنك أيضًا حقن مثيل SqlSessionFactory مباشرةً، عند تحديد كليهما، يصبح SqlSessionFactory غير صالح-> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> --> </bean>.
(2) فئة تنفيذ واجهة طبقة داو UserDaoImpl3:
كود جافا
public class UserDaoImpl3 Extends SqlSessionDaoSupport Implements UserDao { public User getUserById(User user) { return (User) getSqlSession().selectOne("com.xxt.ibatis.dbcp.domain.User.getUser", user } });