Резюме проекта Spring Boot+Mybatis

Spring Boot

IDEA создает проект maven

использоватьIDEA создает проект maven, установите флажок Сборка из архетипа шаблона, выберите здесь тип maven-archetype-quickstart. Этот тип проекта maven обеспечивает унифицированный вывод в виде пакета jar.Это самый быстрый шаблон для создания проектов Spring Boot R&D. Когда нет среды разработки Spring Boot, больше вариантов — maven-archetype-webapp, который создает контейнер J2EE, такой как Tomcat или JBoss, в форме военного пакета. смотрите подробностиОфициальная документация Maven

После успешного создания нужно датьсодержаниеУкажите, какой это каталог, выберите папку проекта, щелкните правой кнопкой мыши и выберите «Пометить каталог как», затем выберите тип каталога. Также создайте каталог ресурсов в основном каталоге и укажите тип. Исходный код java помещается в каталог java в основном каталоге, а файлы конфигурации ресурсов, такие как spring и spring boot, помещаются в каталог ресурсов.

Интеграция проектов с нуля

ВойтиВесенняя официальная документация, проверьте файл pom.xml в каталоге Build with Maven, скопируйте из него зависимость spring-boot-starter-parent в файл pom.xml в проекте, чтобы текущим проектом был проект Spring Boot. И введите проекты spring-boot-starter-web и spring-boot-starter-test под spring-boot-starter-parent в теге pom файла проекта.

Добавьте аннотацию @EnableAutoConfiguration в класс APP. поставить приложениестартовый классВ качестве bean-компонента, который может поддерживать автоматическую настройку и может включать автоматическую настройку всего класса проекта на основе springboot, используйте следующую строку кода для запуска Spring Boot.

SpringApplication.run(App.class,args);

Чтобы реализовать функцию ***controller*** в Spring MVC, введите аннотацию @RestController или @Controller.

Для весенней загрузкиНастраиваемые операции, вам нужно только создать файл конфигурации по умолчанию — application.yml или application.properties в каталоге ресурсов, и настроить его в нем.

Интеграция Mybatis

Введите файл POM, чтобы определить использование базы данных, используйте MySQL, введение пакета MySQL-соединителя-Java; Определите бассейн Connect MySQL для управления ссылками, где использование пула подключения DRUID Alibaba. Затем поддержка вводится под весеннюю загрузку, является MyBatis, в данном документе MyBatis-Spring-Boot-Starter; обязательно MyBatis, представленные в некоторых конфигурациях класса профиля, используется для запуска проекта с доступом к базе данных MyBatis Spring Boot MyBatis, например:

mybatis:
  mapper-locations: classpath:mapping/*.xml

spring:
  datasource:
    name: miaohsa
    url: jdbc:mysql://localhost:3306/miaosha?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
    username: root
    password: 123456
    #使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
Инструмент автоматической генерации mybatis

затем используйтеИнструмент автоматической генерации для mybatis, который используется для создания сопоставления, соответствующего файлу базы данных.

Введите плагин, автоматически сгенерированный mybatis, в pom, например:

<plugin>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-maven-plugin</artifactId>
  <version>1.3.5</version>
  <dependencies>
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.5</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
  </dependencies>
  <executions>
    <execution>
      <id>mybatis generator</id>
      <phase>package</phase>
      <goals>
        <goal>generate</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <!--允许移动生成的文件-->
    <verbose>true</verbose>
    <!--不允许自动覆盖文件-->
    <overwrite>false</overwrite>
    <configurationFile>
      src/main/resources/mybatis-generator.xml
    </configurationFile>
  </configuration>
</plugin>

где находится файл mybatis-generator.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.dtd">

<generatorConfiguration>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <!--数据库链接地址账号密码-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/miaosha?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <!--生成dataobject类的存放位置-->
        <javaModelGenerator targetPackage="com.miaosha.dataobject" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mapping"  targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!--生成Dao类的存放位置-->
        <!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件的代码
              type="ANNOTATIONDMAPPER",生成Java Model和基于注解的Mapper 对象
              type="MIXEDMAPPER",生成基于注解的Java Model和相应的Mapper对象
              type="XMLMAPPER",生成SQLMap XML 文件和独立的Mapper接口
         -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.miaosha.dao"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!--生成对应表和类名-->
        <table tableName="user_info" domainObjectName="UserDO" enableCountByExample="false"
               enableUpdateByExample="false" enableSelectByExample="false"
               enableDeleteByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="user_password" domainObjectName="UserPasswordDO" enableCountByExample="false"
               enableUpdateByExample="false" enableSelectByExample="false"
               enableDeleteByExample="false" selectByExampleQueryId="false"></table>

    </context>
</generatorConfiguration>

Создайте новую конфигурацию Maven в разделе «Конфигурация запуска/отладки», например:

mybatis generator

Измените аннотацию @EnableAutoConfiguration на @SpringBootApplication, что эквивалентно использованию @Configuration, @EnableAutoConfiguration и @ComponentScan со свойствами по умолчанию. Окончательный пример аннотации класса запуска:

@SpringBootApplication(scanBasePackages = {"com.miaosha"})
@RestController
@MapperScan("com.miaosha.dao")

SpringMVC способ разработки

использоватьSpringMVC способ разработки, структура проекта

项目结构

вслой даоа такжеслой объекта данныхОн генерируется инструментом автоматической генерации mybatis Классы под слоем объекта данных (отвечающим за передачу хранилища данных на сервисный уровень) соответствуют объектной модели базы данных, а поля в ней сопоставляются с базой данных одно за другим. Классы уровня dao определяют методы взаимодействия с базой данных.В каталоге отображения ресурсов находится файл конфигурации, соответствующий слою dao, который автоматически генерируется для реализации работы базы данных.

существуетсервисный уровеньСоздайте объектную модель (не просто сквозную базу данных сопоставления, которую вы хотите вернуть службе службы, эта модель соответствует модели в интерактивной бизнес-логике Spring MVC), а затем создайте соответствующую таблицу в базе данных службы слой в каталоге модели под интерфейсом службы метода, интерфейс определяется необходимостью создания соответствующего объекта (в основном возвращаемый тип метода объектная модель), реализация каталога реализована на уровне службы. Добавить метод: добавьте соответствующий оператор SQL, соответствующий файлу конфигурации, в сопоставление каталога, сопоставление (метод добавления) в соответствующий интерфейс в каталоге dao.

Примечание: если в таблице базы данных есть идентификатор автоинкремента, вам необходимо добавить атрибуты useGeneratedKeys="true" и keyProperty="id" в тег вставки в файле конфигурации в каталоге сопоставления, чтобы указать идентификатор автоинкремента.

Определите метод взаимного преобразования между объектом dataobject базы данных и объектной моделью модели в serviceImpl, и определите метод взаимного преобразования между моделью объекта модели и представлением объекта viewobject в контроллере, который используется здесь.org.springframework.beans.BeanUtilsметод (функция заключается в инкапсуляции данных одного объекта bean-компонента в другой объект bean-компонента с аналогичной структурой атрибутов, некоторые атрибуты могут быть не инкапсулированы по причинам типа и должны быть добавлены вручную).

В класс serviceImpl и класс контроллера необходимо добавить аннотацию **@Service и аннотацию @Controller соответственно**.

слой ответаОпределен унифицированный тип возвращаемого значения, имеется общий объект, и объект, который, наконец, возвращается во внешний интерфейс, является общим объектом.

слой ошибокСуществует общий интерфейс ошибок,Класс перечисления перечисленияДля реализации этого интерфейса класс перечисления создает подкласс типа enum, который реализует интерфейс общей ошибки через конструктор, класс, который наследует Exception и реализует метод общей ошибки, и тесно связан с соответствующей общей ошибкой (т.е. enum class), и реализовать соответствующий конструктор для простоты использования. Этот метод соответствует шаблону проектирования -Реализация бизнес-класса исключения оболочки.

существуетслой контроллераСоздайте объект, который может использоваться пользовательским интерфейсом, в каталоге viewobject, а поля в нем — это поля, которые может просматривать пользователь. Создайте класс контроллера соответствующего объекта на уровне контроллера и вызовите методы в его сервисном интерфейсе для реализации соответствующей логики.

Существует также базовый класс BaseController под уровнем контроллера, который определяет свойства в аннотации @RequestMapping на интерфейсе под классом контроллера.consumes(укажите тип отправленного контента для обработки запросов) значение по умолчанию (не требуется для запросов GET); и разрешайте исключения, которые не поглощаются уровнем контроллера, определяя обработчик исключений (для проблем обработки бизнес-логики или ошибок бизнес-логики, а не для тех, которые не может быть обработано сервером) ошибка), например:

@ExceptionHandler(Exception.class)//需要指明收到什么样的exception之后才会进入它的处理环节,此处定义为根类
@ResponseStatus(HttpStatus.OK)//捕获到controller抛出的exception,并返回HttpStatus.OK,即status=200
@ResponseBody //handler exception使用这种方式(Object会寻找本地页面文件)仅仅只能返回页面路径,无法处理viewobject类对应的@ResponseBody形式,加上@ResponseBody注解即可解决
public Object handlerException(HttpServletRequest request, Exception ex){
    //获取异常并处理
}

Все остальные классы контроллеров должны наследовать базовый класс BaseController.

В UserController учетные данные для входа добавляются в интерфейс входа пользователя в интерфейс входа пользователя.sessionсередина

@Autowired
private HttpServletRequest httpServletRequest;
//通过bean的方式注入进来,代表这个HttpServletRequest是单例模式
//单例模式怎么可以支持一个request支持多个用户的并发访问?
//bean包装的HttpServletRequest,本质是一个proxy,它内部拥有ThreadLocal方式的map,去让用户在每个线程当中去处理它自己对应的request,
//并且有ThreadLocal清除机制,可以放心使用,且这个HttpServletRequest对应当前用户的http请求
//将登陆凭证加入到用户登录成功的session中,分布式中用token
this.httpServletRequest.getSession().setAttribute("IS_LOGIN",true);
this.httpServletRequest.getSession().setAttribute("LOGIN_USER",userVO);
Шифрование паролей

Поскольку реализация MD5, поставляемая с jdk, поддерживает только 16-битный MD5, измените метод шифрования, например:

//将密码加密
public String EncodeByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException {
    //确定计算方法
    MessageDigest md5 = MessageDigest.getInstance("MD5");
    BASE64Encoder base64Encoder = new BASE64Encoder();
    //加密字符串
    String newstr = base64Encoder.encode(md5.digest(str.getBytes("utf-8")));
    return newstr;
}

слой валидатораНижеПравила проверки форматирования, представил пакет Apache Commons Lang в файле pom и использовал его инструментальный класс StringUtils, а также представил пакет hibernate-validator для проверки. Под ним создается объект результата проверки, а также в объекте для использования создается метод получения информации об ошибке, и создается класс реализации проверки, реализующий класс InitializingBean, и инстанцируется валидатор hibernate заводской проверкой, а затем Реализуйте метод проверки и верните объект результата проверки. Кроме того, если есть какие-либо ограничения на поля, вы можете добавить аннотации, такие как @NotBlank, @NotNull, @Max, @Min и т. д., к полям объектной модели под слоем модели.

междоменное разрешение

Добавьте следующие аннотации в класс Controller:

@CrossOrigin(allowCredentials = "true",allowedHeaders = "*")  //实现跨域

DEFAULT_ALLOW_CREDENTIALS=верно:

После настройки кредита xhrFields с интерфейсом, Обеспечьте совместное использование сеансов между доменами

внешний интерфейсajaxЗапрос на добавление настроек: xhrFields:{withCredentials:true}

DEFAULT_ALLOWED_HEADERS = *:

Разрешает междоменную передачу всех параметров заголовка и будет использоваться для междоменных запросов на совместное использование сеанса с использованием токенов в домене заголовка.

Ссылаться на

МООК-курс»SpringBoot создает базовый проект для электронной коммерции", рекомендуется, учитель говорит очень хорошо

кодовый адрес