Предисловие
Я всегда использовал Springmvc+Mybatis для разработки внутренних интерфейсов. Я недавно был бездействую. Согласно существующим функциональным требованиям, я использую Springboot+Mybatis для развертывания простого веб -проекта.
Инструменты используются
Проблемы решены
1. Как создать проект Springboot с идеей
2. Как настроить сервер, базу данных, mybatis, просмотреть анализатор
3. Как использовать генератор Mybatis для автоматического генерации кода
4. Как использовать Multipart для загрузки файлов
5. Как использовать транзакции Springboot
6. Как упаковать развертывание Tomcat
Используйте идею для создания проекта Springboot
1. Откройте идею, File -> new -> Project, выберите Spring initializr, а затем следующий.
2. Изменить ariifact, имя и пакет ниже будут автоматически изменены; Упаковка имеет два режима, один - JAR, а другой - война; Поскольку Springboot поставляется с Tomcat, проект может быть Jar и работать напрямую; Хотя мой существующий проект развернут на Tomcat, мне нужно быть военным пакетом; А потом.
3. Установите зависимость проекта, затем затем перейдите на следующую страницу, установите имя проекта и нажмите «Закончить», чтобы закончить.
4. Введите проект
Pom.xml
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <doliderversion> 4.0.0 </modelversion> <groupid> com.example </Groupid> <Artifactid> </artifactid> </artifactid> </artifactid> <sersive> 0.0.1-snapshot </version> <Cavegaging> War </packaging> <mame> Springbootdemo </name> <socription> демо-проект для Spring Boot </description> <parent> <groupd> org.springframework.boot </GroupId> <strifactid> Spring-boot-Starter-parent </artifactid> 2.0.0.12.12.12.12.12.R. <RELAIDYPATH/> <!-Поиск родителя от репозитория-> </parent> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceEncoding> <Project.Report.OutputEncoding> utf-8 </project.Reproting.outputing> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <depervice> <groupid> org.mybatis.spring.boot </groupid> <ratifactid> mybatis-spring-boot-starter </artifactid> <sersion> 1.3.2 </version> </artepact> <dependency> <groupid> org.springframework.boot </GroupD> <ratifactid> <groupd> <cracpope> runtime </scope> </degestency> <dependency> <groupid> com.microsoft.sqlserver </GroupId> <ratifactid> mssql-jdbc </artifactid> <crappope> runtime </scope> </jeperdent> <seyedy> <groupd> org.spramework.boot> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <groupId> org.springframework.boot </GroupId> <artifactid> Spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>
SpringMVC без файла конфигурации
Два примера: 1. Доступ к запросу http и рендеринг страницы 2. http request возвращает строку json
-Коризовать источник данных и рендеринг просмотра
-Подзок с зависимостью от рендеринга POM
-Create velcomecontroller, Welcome.jsp
Новая структура проекта
Application.yml Настройка источника данных и рендеринг просмотра
# Источник данных и конфигурация просмотра Spring: DataSource: URL: JDBC: SQLServer: // xx: 1433; DatabaseName = xx username: xx пароль: xx-class-name: com.microsoft.sqlserver.jdbc.sqlserverdriver mvc: views:/web-inf.
pom.xml добавляет визуализацию рендеринга зависимости
<!-Использование JSP требует зависимости-> <Dependency> <groupId> org.apache.tomcat.embed </GroupId> <Artifactid> tomcat-embed-jasper </artifactid> <crope>
Создайте WelcomeController
пакет com.example.springbootdemo.web; import com.example.springbootdemo.entity.welcome; import com.example.springbootdemo.response.response; импорт com.example.springbootdemo.response.responsecode; import org.sprimewrame.stertrolpe.controller org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; импорт org.springframework.web.servlet.modelandView; импорт java.util.arraylist; import java.ut.list.list.list@atmerpape@@@atherpappappypaping@@@atherpapping@@@@atherspappappypappy. Welcomecontroller { / *** Посетите walding.jsp page* @return* / @requestmapping ("wevelceindex") public modelAndView wealdingIndex () {modelandView mv = new ModelAndView (); MV.SetViewName ("Welcome"); mv.addobject ("name", "xx"); вернуть MV; } / *** return json string* @return* / @requestmapping ("getWelComeInfo") @Responsebody public response getWelcomeInfo () { / *** Тестовые данные* / list <selcoble> 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 («мужчина»); Приветствует. ADD (W1); Приветствует. Адд (W2); Ответ ответа = новый ответ (); response.setData (приветствует); response.setretCode (responsecode.success); response.setretdesc («успех»); ответный ответ; }}Создайте Welcome.jsp
< %@ page contentType = "text/html; charset = utf-8" language = "java" %> <html> <head> <title> verdering </title> </head> <body> Привет, $ {name} </body> </html>Начните проект и доступ
http: // localhost: 8080/добро пожаловать/getwelcomeinfo
http: // localhost: 8080/Welcome/Welcomeindex
Автоматически генерировать код с помощью генератора MyBatis
Используется для создания *mapper.xml, модель, файлы DAO для таблиц
Добавить генератор Mybatis для автоматического генерации плагина кода в pom.xml
<buld> <blicins> <blicin> <groupid> org.springframework.boot </GroupId> <StrifactId> Spring-boot-maven-plugin </artifactid> </placin> <!-Mybatis Generator Автоматически генерируйте плагин-код-> <blicin> <groupid> org.mybatis.generator </Group> <Artifactid> mybatis-Generator-maven-plugin </artifactid> <sersion> 1.3.2 </version> <configuration> <configurationFile> $ {основанный на основании} /src/main/resources/generator/generatorconfig.xml </configurationfile> true </verwrite> </verbase> </plugin> </plugins> </build>Добавить GeneratorConfig.xml в папку ресурсов/генератора, настроенной в pom.xml выше
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype GeneratorConfiguration public "-// mybatis.org//dtd mybatis Generator Configuration 1.0 // en" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dt.> <generator-genorferfig_1_0.1_0. Драйвер базы данных: выберите пакет драйверов базы данных на вашем локальном жестком диске-> <classpathentry location = "c: /susers/.m2/repository/com/microsoft/sqlserver/mssql-jdbc/6.2.2.jre8/mssql-jdbc-6.2.2.jre8.jar"/> <context-id = "db2tables" db2tables "db2tables". targetruntime = "mybatis3"> <commentGenerator> <name = "supressDate" value = "true"/> <!-Смотрите ли автоматически сгенерированные комментарии. DriverClass = "com.microsoft.sqlserver.jdbc.sqlserverdriver" connectionUrl = "jdbc: sqlserver: // xx: 1433; databaseName = xx" userid = "xx" password = "xx"> </jdbcconnection> <javatyresolver> "xx"> </jdbcconnection> <javatyperesolver> "xx"> "jdbcconcection> <javatyresolver>". value="false"/> </javaTypeResolver> <!-- Generate model package name and location--> <javaModelGenerator targetPackage="com.example.springbootdemo.entity" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javamodelgenerator> <!-генерировать имя пакета и местоположение картирования файла-> <sqlmapgenerator targetpackage = "mybatis" targetproject = "src/main/resources"> <свойство = "inablesubpackages" value = "true"/> </sqlmapgenerator> <! type = "xmlmapper" targetpackage = "com.example.springbootdemo.mapper" targetproject = "src/main/java"> <name = "ensubleBackages" value = "true"/> </javaclientgenerator> <!-Таблица-это имя таблицы в таблице или имя. <Таблица TableName = "xx" domainObjectName = "StudentBinding" enableCountByexample = "false" enableUpdatebyexample = "false" enabledEleteByexample = "false" enableselectbyexample = "false" selectByexample quelyid = "false"> </table> </generatorconfiguration>
Используйте генератор Mybatis: генерируйте в Maven для получения связанных классов на основе таблиц в базе данных
Редактировать конфигурации -> add -> maven
Настройте mybatis
Добавить конфигурацию mybatis в Application.yml
# mybatis configuration mybatis: mapper-location
Добавить @Repository ("Студент -сайтпиндинг -маппер") аннотация в StudentBindingMapper.java, чтобы сканировать до
@Repository ("StudentBindingMapper") Публичный интерфейс StudentBindingMapper {}Добавить @mapperscan в springbootdemoapplication.java
пакет com.example.springbootdemo; import org.mybatis.spring.annotation.mapperscan; import org.springframework.boot.springapplication; импорт org.springframework.boot.autoconfigure.springbootapplication;@springbootapplication@mapperscan ("com.example.springbootdemo.mapper") открытый класс Springbootdemoapplication }}Добавить слои обслуживания и контроллера
Проектный уровень
Добавить StudentBindingService
пакет com.example.springbootdemo.service; import com.example.springbootdemo.entity.studentbinding; import java.util.list; общественный интерфейс StudentBindingservice {int deletebyprimarykey (long id); int insert (запись студента); int insertselective (запись студентов); Студент связывание SelectByPrimaryKey (Long Id); int updatebyprimarykeyselective (запись студентов); int updatebyprimarykey (запись студентов); void validtransaction (Long Id); Список <TradeBinding> getStudentBindByquery (запись Студента);}Добавить StudentBindingServiceImpl
пакет com.example.springbootdemo.service.impl; import com.example.springbootdemo.entity.studentbinding; import com.example.springbootdemo.mapper.StudentBindingMapper; import Com.example.springbootdemo.service.studentbinderserviser; org.springframework.beans.factory.annotation.autowired; импорт org.springframework.stereotype.service; import org.springframework.transaction.annotation.transactional; импорт java.util.list; @Autowired Частный студент -сайт -маппер Студент -Биндингмаппер; @Override public int deletebyprimarykey (long id) {return student bindingmapper.deletebyprimarykey (id); } @Override public int insert (student -shinding record) {return student bindingmapper.insert (record); } @Override public int insertselective (student -shinding record) {return StudentBindingMapper.InsertSelective (record); } @Override Public StudentBinding SelectByPrimaryKey (Long Id) {return StudentBindingMapper.selectbyPrimaryKey (id); } @Override public int updateByPrimaryKeySeelective (Record) {return studentBindingMapper.UpdateByPrimaryKeySelective (record); } @Override public int updatebyprimarykey (record student speeding) {return student bindingmapper.updatebyprimarykey (record); } @Override @Transactional public void validTransaction (long id) {// после удаления вставьте данные ID StudentBindingMapper.deleteByprimarykey (id); Студенческая связывающая запись = новый студент -сайт (); record.setid (id); StudentBindingMapper.insertselective (record); } @Override Public List <ditladbinding> getStudentBindByquery (student -shinding record) {return StudentBindingMapper.getStudentBindbyQuery (ronck); }}Добавлен Студент -Биндингконтроллер
пакет com.example.springbootdemo.web; import com.example.springbootdemo.entity.studentbinding; import com.example.springbootdemo.response.response; импорт com.example.springbootdemo.response.responsecode; com.example.springbootdemo.service.studentbindingservice; import org.springframework.beans.factory.annotation.autowired; импорт org.springframework.stereotype.controller; импорт org.springforkwork.web.bind.annotation.requestmapping; org.springframework.web.bind.annotation.requestparam; импорт org.springframework.web.bind.nantation.responsebody; импорт org.springframework.web.multipart.multipartfile; импорт org.spramework.web.servlet.modelandView; java.io.ioexception; import java.util.list;@controller@requestMapping (value = "/student") public class clostbindingcontroller {@autowired private studentbindingservice studentBindingService; / ** * Удалить связанную информацию студента в соответствии с параметрами запроса * @param id * @return */ @requestmapping ("deletebyprimarykey") @responsebody public response deletebyprimarykey (long id) {response response = new response (); if (id == null) {response.setretcode (actionecode.paramarter_error); response.setretdesc ("ошибка параметров"); ответный ответ; } try {StudentBindingService.deleteByprimaryKey (id); response.setretCode (responsecode.success); response.setRetdesc ("deletESuccess"); } catch (Exception e) {e.printstackTrace (); response.setretCode (responsecode.failed); response.setretdesc ("deleteexception"); } return response; } / ** * Добавить связанную информацию студента в соответствии с параметрами запроса * @param record * @return * / @requestmapping ("insertselective") @responsebody public insertelective (student -shinding) {response response = new response (); if (record == null) {response.setretcode (responsecode.paramarter_error); response.setretdesc ("ошибка параметров"); ответный ответ; } try {StudentBindingService.InsertSelective (record); response.setretCode (responsecode.success); response.setretdesc («Добавить успех»); } catch (Exception e) {e.printstackTrace (); response.setretCode (responsecode.failed); response.setretdesc ("добавить исключение"); } return response; } / ** * Согласно параметрам запроса, запросите информацию о связанной студенте * @param id * @return * / @requestmapping ("selectbyprimarykey") @Responsebody public response selectByprimaryKey (long id) {response = response = new response (); if (id == null) {response.setretcode (actionecode.paramarter_error); response.setretdesc ("ошибка параметров"); ответный ответ; } try {Student связывает студент -сайт = StudentBindingService.selectbyPrimaryKey (id); response.setData (студент -связывание); response.setretCode (responsecode.success); response.setretdesc ("Успех запроса"); } catch (Exception e) {e.printstackTrace (); response.setretCode (responsecode.failed); response.setretdesc ("Исключение запроса"); } return response; } / ** * Проверьте, проста ли аннотация @Transaction просто использовать * @param id * @return * / @requestmapping ("validtransaction") @Responsebody public valdTransaction (long id) {response = response = new response (); if (id == null) {response.setretcode (actionecode.paramarter_error); response.setretdesc ("ошибка параметров"); ответный ответ; } try {StudentBindingService.validTransaction (id); response.setretCode (responsecode.success); } catch (Exception e) {e.printstackTrace (); response.setretCode (responsecode.failed); } return response; }/ *** render jsp page* @return*/ @requestmapping ("wevelceIndex") public modelandView wealdingIndex () {list <toodtsbinding> StudentBindings = StudentBindingService.getStudentBindByquery (новый студент -бинтинг ()); // model.addattribute ("StudentBindings", StudentBindings); ModelAndView MV = New ModelAndView (); MV.SetViewName ("Welcome"); MV.AddObject ("StudentBindings", StudentBindings); вернуть MV; } / *** ПРИМЕЧАНИЕ ПЕРЕДАТЬ СТРАНИЦУ ФАЙЛА* @return* / @requestmapping ("MultipartIndex") public String multipartIndex () {return "multipart-index"; }/** * Загрузить файл в указанный каталог * @param file * @return */@requestmapping ("/upload") @Responsebody public response opload (@requestparam ("file") multiplaartfile file) {response = new response (); if (file.isempty ()) {response.setretcode (actionecode.paramarter_error); response.setretdesc ("ошибка параметров"); ответный ответ; } try {string filePath = "d: // ceshi // upload //"; Файл dir = new File (filePath); if (! dir.isdirectory ()) {dir.mkdir (); } String fileoriginalName = file.getoriginalfilename (); File writefile = new File (filePath + fileoriginalName); // написать файл в disk file.transferto (writefile); response.setretCode (responsecode.success); response.setretdesc («Загружено успешно»); } catch (ioException e) {e.printstackTrace (); response.setretCode (responsecode.failed); response.setRetdesc ("upload не удалась"); } return response; }}После перезапуска проекта вы можете получить доступ к различным интерфейсам
Транзакции на конфигурации Springboot
Есть два способа настройки транзакций в Springboot
1. В входе в проект SpringBootDemoApplication.java добавьте аннотацию @enabletransactionManagement, чтобы начать транзакцию
2. Добавить @transactional Annotation в класс реализации услуг, тогда все методы класса управляются с помощью транзакций; Вы также можете напрямую добавить @transactional Annotation к методам класса реализации службы, а затем выполняется только управление транзакциями в этом методе. Существуют примеры добавления транзакций к методам в вышеуказанном коде.
Пакет Springboot для развертывания Tomcat
Редактировать конфигурацию -> maven -> add -> start -> Копировать пакет войны -> tomcat webapp -> изменить имя пакета войны -> Tomcat bin -> startup.bat
После начала Tomcat посетите http: // localhost: 8080/springbootdemo/добро пожаловать/приветствовать для проверки
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.