التكامل مع Spring3
باعتباره الإطار الأساسي ، يمكن لـ Spring دمج أطر العمل الخلفية مثل السبات ، mybatis ، إلخ.
يقدم المقال السابق استخدام MyBatis وحده ، والمنطق العام هو:
SQLSessionFactory <- ملف التكوين (بما في ذلك تكوين اتصال قاعدة البيانات)
ixxxmapper <- sqlsession <- sqlsessionfactory
<- واجهة mapper <- mapper xml
بعد الحصول على ixxmapper ، يمكنك استدعاء طريقته لتفاعل البيانات.
عند الاندماج مع الربيع ، يجب إدارة الكائنات المذكورة أعلاه كفاصوليا:
DataSource Bean <- تكوين اتصال قاعدة البيانات
SQLSessionFactory Bean <- DataSource
<- ملف التكوين
usermapper bean <- sqlsessionfactory
<- واجهة Mapper
1. إضافة تبعيات في pom.xml:
<Properties> <Merbatis.spring.version> 1.2.1 </mybatis.spring.version> <dbcp.version> 1.4 </dbcp.version> <pring.version> <roughId> org.mybatis </rougiD> <StifactId> mybatis-spring </stifactid> <الإصدار> $ {mybatis.spring.vent <StifactId> spring-jdbc </stifactid> <الإصدار> $ {spring.version} </version> </repreadency> <!-DataSource هو مثيل لـ BasicDataSource-> <roucid> commons-dbcp </rougiD> </reperency> <reperency> <roupiD> org.springframework </rougiD> <StifactId> اختبار الربيع </attifactid> <sophy> $ {spring.version} </version> </sependency> </التبعية> 2. قم بإنشاء ملف Beans-da.xml تحت ClassPath:
<؟ XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id = "datasource"> <! value = "com.mysql.jdbc.driver" /> <property name = "url" value = "jdbc: mysql: // localhost: 3306 /hbatis؟ fariceencoding = utf8" /> <property name = "username" value = "root" /> <propert id = "sqlsessionfactory"> <!-sqlsessionfactory bean-> <property name = "datasource" ref = "dataSource" /> <!-data source-> <property name = "configlocation" value = "classpath: configuration.xml" /> <! name = "sqlsessionfactory" ref = "sqlsessionfactory" /> <property name = "mapperInterface" value = "com.john.hbatis.mapper.iusermapper" /> <!-واجهة رسم الخرائط-> </bans>
3. فئة الاختبار:
contextConfiguration (مواقع = {"classpath: beans-da.xml"}) الفئة العامة springIntegrationTest يمتد ustructionTestNgSpringContextTSTS {private static final logger = loggerfactory.getLogger (SpringIntegrationTest.class) ؛ Resource iusermapper mapper ؛ test public void querytest () {user user = mapPer.getuserById (1) ؛ log.info ("name: {} ، العنوان: {}" ، user.getName () ، user.getAddress ()) ؛ }} التكامل مع springMVC
هنا نبني على التكامل مع Spring3:
1. إضافة تبعيات springmvc و freemarker إلى pom.xml:
<Properties> <remarker.version> 2.3.19 </freemarker.version> <vervlet.version> 2.5 </servlet.version> </soperties> <reperency> <roupiD> org.freemarker </rougiD> <StifactId> freemarker </tectifactid> <roughid> javax.servlet </rougiD> <StifactId> servlet-api </shintifactid> <sophy> $ {servlet.version} </version> <scope> المقدمة </scope> </redence>2. أضف مستمع Spring و SPRINGMVC's Servlet في web.xml:
<StaNeer> <Stexer-Class> org.springframework.web.context.contextLoaderListener </stankerer-class> <!-استمع إلى أحداث الحاويات ، وتهيئة وتغلق سياق تطبيق الويب و Call ContextCleanPlistener لتنظيف الموارد-> </stanker> <stanker> <StaNerer-Class> org.springframework.web.context.contextCleAnuplistener </beatherer-class> <!-تنظيف الموارد القابلة للتدمير المتعلقة بالينابيع في ServletContext عند إغلاق تطبيق الويب-> </stanker> <Srevlet-Class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <!-<Ing-param> <param-name> contextConfigLocation </param-name> <param-value> ابحث عن $ {project.name} -servlet.xml في دليل web-inf-> <load-on-startup> 1 </load-on-startup> </servlet> <sterled mapping> </servlet-name> hbatis </revlet-name> <url-pattern>3. قم بإنشاء واحدة جديدة تحت ويب إنف
ملف تكوين الربيع ApplicationContext.xml:
<؟ Xmlns: XSI = "http://www.w3.org/2001/xmlschema-instance" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/sctxt http://www.springframework.org/schema/context/spring-context.xsd "> <context: property-placeholder location =" classpath: /database.properties "/> <!-database configuration file-> <bean id =" datasource "p: P: url = "$ {url}" p: username = "$ {user_name}" p: password = "$ {password}" /> <!-تكوين مصدر البيانات-> <bean id = "sqlsessionfactory"> <! name = "configlocation" value = "classpath: configuration.xml"/> <!-ملف تكوين myBatis-> <!-<property name = "mapperlocations" value = "classpath*: com/john/hbatis/model/*. id-> </bean> <bean id = "mapperConfigurer"> <!-مسح الحزمة المحددة للحصول على mapper-> <property name = "basePackage" value = "com.john.hbatis.mapper"/> </bean> </bans>database.properties تحت classpath:
driverClassName = com.mysql.jdbc.driver url = jdbc: mysql: // localhost: 3306/mybatis؟ faractionoding = utf8 user_name = root password = 123456
ملاحظة: نظرًا لأن MappersCannerConfigurer قد يتسبب في فشل اسم المستخدم لحساب المستخدم ، مما يتسبب في فشل اتصال قاعدة البيانات ، لذلك يتم تغييره إلى قيمة أخرى: user_name.
ملف تكوين springmvc hbatis-servlet.xml:
<؟ xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/sctxt http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <mvc: التعليقات التوضيحية- driven/> <!-سجل requestMappingHandlermapping ، requestMappingHandlerAdapter و issectionHandlerexceptionResolver لتوفير الدعم للشروح مثل @requestmapping ، base-package = "com.john.hbatis.controller" /> <!-مسح الفصل مع تعليقات محددة ضمن حزمة وحدة التحكم ، Instantiate وحقن التبعية-> <!-Freemarker View Processor-> <bean id = "viewResolverftl"> <property name = value = "org.springframework.web.servlet.view.freemarker.freemarkerview"/> <property name = "contentType" value = "text/html ؛ charset = utf-8"/> <property name = prefix "value =" <value>*. <value>/web-inf/ftl/</value> <!-مسار تحميل القالب-> </list> </spurnal> </boen> </bons>
4. MVC:
طبقة التحكم: USERCONTROLLER.JAVA
controller @requestmapping ("/article") الطبقة العامة USERCONTROLLER {AUTOWIRED IUSERMAPPER MAPPER ؛ requestmapping ("/list") السلسلة العامة showall (modelMap modelMap) {list <article> articles = mapPPer.getArtIctionSbyuserId (1) ؛ modelMap.Addattribute ("المقالات" ، المقالات) ؛ إرجاع "main.ftl" ؛ }}عرض الطبقة: main.ftl:
<#list المقالات كقالة> <viv> $ {article.id}. $ {article.title}: $ {article.content} </div> </tist>5. ابدأ المشروع ، وأدخل المتصفح: http: // localhost: 8080/hbatis/article/list.htm لعرض النتائج.