مقدمة
لقد استخدمت دائمًا springMVC+mybatis لتطوير واجهات خلفية. لقد كنت خامدا مؤخرا. وفقًا للمتطلبات الوظيفية الحالية ، أستخدم SpringBoot+MyBatis لنشر مشروع ويب بسيط.
الأدوات المستخدمة
مشاكل حل
1. كيفية إنشاء مشروع Springboot مع الفكرة
2. كيفية تكوين الخادم ، قاعدة البيانات ، MyBatis ، عرض المحلل
3. كيفية استخدام مولد MyBatis لإنشاء رمز تلقائيًا
4. كيفية استخدام multipart لتحميل الملفات
5. كيفية استخدام معاملات سبرينج بوت
6. كيفية حزم نشر tomcat
استخدم الفكرة لإنشاء مشروع Springboot
1. افتح الفكرة ، ملف -> جديد -> مشروع ، حدد Spring initializr ، ثم التالي.
2. تعديل Ariifact ، سيتم تعديل الاسم والحزمة أدناه تلقائيًا ؛ التغليف له وضعان ، واحد هو جرة والآخر هو الحرب. لأن Springboot يأتي مع Tomcat ، يمكن أن يكون المشروع جرة وتشغيلها مباشرة ؛ بينما يتم نشر مشروعي الحالي على Tomcat ، أحتاج إلى أن أكون حزمة الحرب ؛ ثم التالي.
3. قم بتعيين تبعية المشروع ، ثم بعد ذلك ، انتقل إلى الصفحة التالية ، وقم بتعيين اسم المشروع ، وانقر فوق "إنهاء".
4. أدخل المشروع
pom.xml
<؟ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 <soph> 0.0.1-snapshot </version> <packaging> WAR </packaging> <ame> springbootdemo </same> <Description> مشروع تجريبي لـ Spring Boot </descriver <REPERANTERPARPHAPT/> <!-LANEUP PARTER من المستودع-> </inpart> <ferties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <Project.reporting.outputing> uTF-8 </proport.reporting.outppouting> </sperties> <ependencies> <redence> <roupiD> org.springframework.boot </rougeid> <unsifactid> spring-boot-starter-jdbc </shifactid> </reperency> <sperency> <roupaCid> org.springframewwork </reperency> <reperency> <roupiD> org.mybatis.spring.boot </rougiD> <StifactId> mybatis-spring-boot-starter </stifactid> <sophy> 1.3.2 </sperive> </spension> <reperency> <roupringid> org.springframework.boot </grouped> <StifactId> spring-boot-devtools </artifactId> <scope> وقت التشغيل </scope> </reperence> <reperence> <roupiD> com.microsoft.sqlserver </groupId> </intifactid> mssql-jdbc </attifactid> <roupl> org.springframework.boot </groupId> <StifactId> Spring-boot-starter-tomcat </shintifactid> <scope> scope> </splistid> propency> <predency> <roupiD> org.springframework.boot </groupid> <scope> test </scope> </sependency> </rependencies> <build> <uccedins> <roupiD> org.springframework.boot </rougiD> <Stifactid> Spring-boot-maven-plugin </shifactid> </sultin> </plugins> </build> </project
springMVC بدون ملف التكوين
مثالان: 1
-تكوين مصدر البيانات وعرض عرض
-عرض عرض تبعيات POM
-رئ WelcomeController ، Welcome.jsp
هيكل مشروع جديد
Application.YML تكوين مصدر البيانات وعرض العرض
# مصدر البيانات وعرض التكوين الربيع: DataSource: url: jdbc: sqlserver: // xx: 1433 ؛ databasename = xx username: xx password: xx driver-class-name: com.microsoft.sqlserver.jdbc.sqlserverdriver mvc: prefix: prefix:
pom.xml يضيف عرض العرض التبعية
<!-استخدم JSP يتطلب تبعيات-> <redency> <roupiD> org.apache.tomcat.embed </rougiD> <intifactid> tomcat-embed-jasper </stifactid> <scope> متوفر </scope> </dependency>
إنشاء welcomeController
package com.example.springbootdemo.web ؛ import com.example.springbootdemo.entity.welcome ؛ import com.example.springbootdemo.response.response org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.responsebody ؛ import org.springframework.web.servlet.modelandview ؛ welcomeController { / *** تفضل بزيارة صفحة الترحيب. MV.SetViewName ("مرحبًا") ؛ mv.addobject ("name" ، "xx") ؛ إرجاع MV ؛ } / *** return json string* return* / @requestmapping ("getWelcomeInfo") responsebody استجابة عامة getWelcomeInfo () { / *** اختبار بيانات* / list <ish> welcomes = new ArrayList <> () ؛ مرحبًا W1 = New Welcome () ؛ w1.setid ("1") ؛ w1.setName ("xx1") ؛ W1.Setage (11) ؛ W1.SetGender ("أنثى") ؛ مرحبًا W2 = New Welcome () ؛ w2.setid ("2") ؛ w2.setName ("xx2") ؛ W2.setage (22) ؛ w2.setgender ("ذكر") ؛ Welcomes.Add (W1) ؛ Welcomes.Add (W2) ؛ استجابة الاستجابة = استجابة جديدة () ؛ استجابة. استجابة. استجابة. استجابة العودة ؛ }}إنشاء الترحيب. jsp
<٪@ page contentType = "text/html ؛ charset = utf-8" language = "java" ٪> <html> <head> <title> عرض عرض </title> </head> <body> hello ، $ {name} </body> </html>ابدأ المشروع والوصول
http: // localhost: 8080/مرحبًا/getWelcomeInfo
http: // localhost: 8080/مرحبًا/مرحبًا بك
قم بإنشاء رمز تلقائيًا باستخدام مولد MyBatis
تستخدم لإنشاء *mapper.xml ، نموذج ، ملفات DAO للجداول
إضافة مولد MyBatis لإنشاء مكون الإضافي رمز تلقائيًا في pom.xml
<Nudgle> <uccedins> <sucplin> <roupiD> org.springframework.boot </rougeid> <StifactId> Spring-boot-maven-plugin </shintifactid> </sultin> <!-MyBatis Generator قم بإنشاء مكونات رمز تلقائيًا-> <croupin> <StifactId> mybatis-generator-maven-plugin </artifactId> <الإصدار> 1.3.2 </version> <configuration> <isconfigurationFile> $ {inlderir} /src/main/resources/generator/generatorconfig.xml </ispintcurationfile> </sultwin> </sullsins> </build>إضافة generatorconfig.xml في مجلد الموارد/المولد التي تم تكوينها في pom.xml أعلاه
<؟ برنامج تشغيل قاعدة البيانات: حدد حزمة برنامج تشغيل قاعدة البيانات على القرص الثابت المحلي-> <classpathentry location = "c: /users/.m2/repository/com/microsoft/sqlserver/mssql-jdbc/6.2.2.jre8/msssql-jdbc-6. TargetRuntIme = "myBatis3"> <SOMENGERERATOR> <property name = "cumpressDate" value = "true"/> <!-سواء لإزالة التعليقات التي تم إنشاؤها تلقائيًا صحيحًا: نعم: خطأ: لا-> <property name = "cumpressallcomments" value = "true"/> </commentGenerator> <! driverClass = "com.microsoft.sqlserver.jdbc.sqlServerDriver" connectionurl = "jdbc: sqlserver: // xx: 1433 ؛ databasename = xx" userid = "xx" password = " value = "false"/> </javatyperesolver> <!-إنشاء اسم حزمة النموذج وموقعه-> <JavamodElgenerator TargetPackage = "com.example.springBootDemo.entity" targetproject = "src/main/java </javamodelgenerator> <!-إنشاء اسم الحزمة وموقع ملف التعيين-> <sqlmapgenerator targetpackage = "mybatis" targetproject = "src/main/resources"> <property name = "enlabesUbackages" value = "true"/> </sqlmapgenerator> type = "xmlmapper" targetpackage = "com.example.springbootdemo.mapper" targetproject = "src/main/java"> <property name = "EnlabesUBPackages" value = "true"/> </javaclientgenerator> <! <table tablename = "xx" domainObjectName = "studentBinding" enableCountByExample = "false" enableupdateExample = "false" enableleteberexample = "false" enlabeselexample = "false" selectbyexampled = "false"> </context>
استخدم MyBatis-Generator: إنشاء في Maven لإنتاج فئات ذات صلة بناءً على الجداول الموجودة في قاعدة البيانات
تحرير التكوينات -> إضافة -> Maven
تكوين MyBatis
أضف تكوين mybatis في application.yml
# myBatis التكوين myBatis: mapper-locations: classpath*: mybatis/*mapper.xml type-aliases package: com.example.springbootdemo.entity
إضافة repository ("StudentBindingMapper") التعليق التوضيحي في studentBindingMapper.java للمسح الضوئي إلى
repository ("studentBindingMapper") واجهة عامة studentBindingMapper {}إضافة mapperscan في springbootdemoapplication.java
package com.example.springbootdemo ؛ استيراد org.mybatis.spring.annotation.mapperscan ؛ استيراد org.springframework.boot.springapplication ؛ استيراد org.springframework.boot.autoconfigure.SpringBootApplication ؛@springbootapplication@mapperscan ("com.example.springbootdemo.mapper") الطبقة العامة springbootdemoapplication {public static void main (string) }}أضف طبقات الخدمة ووحدة التحكم
مستوى المشروع
إضافة studentBindingService
package com.example.springbootdemo int insert (سجل الطالب) ؛ int insertSeertive (سجل الطالب) ؛ StudentBinding SelectByprimaryKey (معرف طويل) ؛ int UpdateByPrimaryKeySelective (سجل الطالب) ؛ int updateByPrimaryKey (سجل الطالب) ؛ void validtransaction (معرف طويل) ؛ قائمة <TudtureBinding> getStudentBindbyquery (سجل الطالب) ؛}
أضف studentBindingServiceImpl
package com.example.springbootdemo.service.impl ؛ استيراد com.example.springbootdemo.entity.studentBinding ؛ import com.example.springbootdemo.mapper.studentBindingMapper org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.stereotype.service ؛ استيراد org.springframework.tranctaction.antranstaction.transactional {autowired private studentBindBindingMapper studentBindBindingMapper ؛ Override public int deleteberprimarykey (long id) {return studentBindingMapper.DeleteByPrimaryKey (id) ؛ } Override public int insert (studentBinding Record) {return studentBindingMapper.insert (record) ؛ } Override public int insertSeerTective (studentBinding Record) {return studentBindingMapper.InsertSelective (record) ؛ } Override Public StudentBinding SelectByPrimaryKey (Long id) {return studentBindingMapper.SelectByPrimaryKey (id) ؛ } Override public int updateByPrimaryKeySelective (studentBinding Record) {return studentBindBindingMapper.updateByPrimaryKeySelective (record) ؛ } Override public int updateByPrimaryKey (سجل studentBinding) {return studentBindingMapper.updateByPrimaryKey (record) ؛ } OverRideTransActional public void validTransaction (id id) {// بعد الحذف ، أدخل بيانات id studentBindBindingMapper.DeleteByPrimaryKey (id) ؛ سجل الطلاب = New StudentBinding () ؛ record.setId (id) ؛ studentBindingMapper.InserTslective (record) ؛ } Override Public List <TudentBinding> getStudentBindBindByquery (سجل الطالب) {return studentBindingMapper.getStudentBindbyquery (record) ؛ }}تمت إضافة StudentBindingController
package com.example.springbootdemo.web ؛ import com.example.springbootdemo.entity.studentBinding ؛ import com.example.springbootdemo.response.respons com.example.springbootdemo.service.studentBindingservice ؛ استيراد org.springframework.beans.factory.annotation.autowired org.springframework.web.bind.annotation.requestparam ؛ استيراد org.springframework.web.bind.annotation.responsebody ؛ import org.springframework.web.multipart.multipartfile java.io.ioException ؛ استيراد java.util.list ؛@controller@requestMapping (value = "/studentBind") فئة عامة studentBindingController {autowired private StudentBindingService studentBindingService ؛ / ** * حذف معلومات الطالب المربوطة وفقًا لمعلمات الطلب * param id * return */ @requestmapping ("deleteByPrimaryKey") responsebody استجابة عامة DELETEBRIMARYKEY (معرف طويل) {response = استجابة جديدة () ؛ if (id == null) {response.setRetCode (responseCode.paramarter_error) ؛ استجابة. استجابة العودة ؛ } جرب {studentBindingService.DeleteByPrimaryKey (id) ؛ استجابة. استجابة. } catch (استثناء e) {E.PrintStackTrace () ؛ استجابة. استجابة. } استجابة العودة ؛ } / ** * أضف معلومات الطالب المربوطة وفقًا لمعلمات الطلب * param record * @return * / @requestmapping ("insertSelective") responsebody استجابة عامة insertSeertStelective (studentBinding record) {reponse review = new response () ؛ if (record == null) {response.setRetCode (responseCode.paramarter_error) ؛ استجابة. استجابة العودة ؛ } جرب {studentBindingService.insertSelective (record) ؛ استجابة. استجابة. } catch (استثناء e) {E.PrintStackTrace () ؛ استجابة. استجابة. } استجابة العودة ؛ } / ** * وفقًا لمعلمات الطلب ، اسكّل معلومات الطالب المرتبطة * @param id * @return * / @requestmapping ("selectByPrimaryKey") responsebody استجابة عامة selectByPrimaryKey (معرف طويل) {response dropex = new response () ؛ if (id == null) {response.setRetCode (responseCode.paramarter_error) ؛ استجابة. استجابة العودة ؛ } جرب {studentBinding studentBinding = studentBindingService.SelectByPrimaryKey (id) ؛ استجابة. استجابة. استجابة. } catch (استثناء e) {E.PrintStackTrace () ؛ استجابة. استجابة. } استجابة العودة ؛ } / ** * تحقق مما إذا كان التعليق التوضيحي transaction سهل الاستخدام * @param id * @return * / requestMapping ("ValiverTransaction") responsebody استجابة عامة ValiverTransaction (معرف طويل) {استجابة = استجابة جديدة () ؛ if (id == null) {response.setRetCode (responseCode.paramarter_error) ؛ استجابة. استجابة العودة ؛ } جرب {studentBindingService.ValIdTransaction (id) ؛ استجابة. } catch (استثناء e) {E.PrintStackTrace () ؛ استجابة. } استجابة العودة ؛ }/ *** عرض صفحة JSP* return*/ @requestmapping ("WelcomeNdex") PublicAndView WelcomeIndex () {list <StudentBinding> studentBindings = studentBindingService.getStudentBindbindBindbyQuery (New StudentBinding ()) ؛ // model.addattribute (" modelandview mv = new ModelAndView () ؛ MV.SetViewName ("مرحبًا") ؛ mv.addobject ("studentbindings" ، studentBindings) ؛ إرجاع MV ؛ } / *** القفز لتحميل صفحة الملف* return* / @requestmapping ("multipartIndex") السلسلة العامة multipartIndex () {return "multipart-index" ؛ }/** * قم بتحميل الملف إلى الدليل المحدد * param file * regurn */ @requestmapping ("/upload") recsponsebody respload public repload (requestparam ("file") ملف multipartfile) if (file.isempty ()) {response.setRetCode (responsecode.paramarter_error) ؛ استجابة. استجابة العودة ؛ } جرب {string filepath = "d: // ceshi // upload //" ؛ ملف dir = ملف جديد (filePath) ؛ if (! dir.isdirectory ()) {dir.mkdir () ؛ } string fileoriginalName = file.getoriginalfilename () ؛ ملف writefile = ملف جديد (filePath + fileoriginalName) ؛ // اكتب الملف إلى disk file.transferto (writefile) ؛ استجابة. استجابة. } catch (ioException e) {E.PrintStackTrace () ؛ استجابة. استجابة. } استجابة العودة ؛ }}بعد إعادة تشغيل المشروع ، يمكنك الوصول إلى واجهات مختلفة
معاملات تكوين Springboot
هناك طريقتان لتكوين المعاملات في Springboot
1. في مدخل مشروع springbootdemoapplication.java ، أضف التعليق التوضيحي enableTransActionmanagement لبدء المعاملة
2. إضافة التعليق التوضيحي transactional إلى فئة تنفيذ الخدمة ، ثم يتم إدارة جميع طرق الفصل من خلال المعاملات ؛ يمكنك أيضًا إضافة التعليق التوضيحي transactional مباشرة إلى أساليب فئة تنفيذ الخدمة ، ثم يتم تنفيذ إدارة المعاملات فقط على هذه الطريقة. هناك أمثلة على إضافة المعاملات إلى الأساليب في الكود أعلاه.
حزمة Springboot لنشر Tomcat
تحرير التكوين -> Maven -> إضافة -> ابدأ -> انسخ حزمة الحرب -> Tomcat WebApp -> تعديل اسم حزمة الحرب -> Tomcat bin -> Startup.bat
بعد بدء تشغيل Tomcat ، تفضل بزيارة http: // localhost: 8080/springbootdemo/مرحبًا/مرحبًا
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.