Интеграция SpringBoot с SpringBoot MyBatis (2)

Spring Boot

Нравится и смотрите снова, и вырабатывайте привычку.

Сообщение: Иногда будут сильные ветры и волны, и паруса будут висеть прямо в море. Эта статья была включена вGitHub.com/Открыть сейчас/-B…Приглашаем всех к звезде, вместе учимся и вместе добиваемся прогресса. Если в статье есть ошибки, укажите на них. На более позднем этапе маршрут и совместное использование ресурсов внешнего обучения будут запланированы на GitHub.

предисловие

Изучив предыдущую главу, мы получили простое введение в SpringBoot. Далее мы подробно изучим SpringBoot. Мы знаем, что большая часть данных любого веб-сайта является динамической, то есть данные извлекаются из базы данных. , и нестатические данные, то наш следующий шаг — подключиться к базе данных.Теперь типы баз данных, которые мы часто используем, можно условно разделить на два типа: реляционные базы данных и нереляционные базы данных.

  • База данных MySQL, база данных Oracle, база данных SQL Server и т. д. являются реляционными базами данных.
  • Redis, Mongodb и т. д. — все это нереляционные базы данных.

Цели этой главы

  • Используйте SpringBoot и MyBatis для управления базой данных с помощью аннотаций.

  • Использование SpringBoot и MyBatis для управления базой данных через файлы конфигурации XML.

Строительство проекта

1. Откройте идею и выберите «Создать новый проект».

2. Выберите Spring Initializer, затем нажмите «Далее».

3. Заполните организацию, координаты и другую информацию, а затем нажмите Далее.

4. Выберите Зависеть от Интернета, затем установите флажок Веб, а затем нажмите кнопку Далее, пока проект не будет построен.

5. После того, как структура проекта настроена, мы создаем несколько новых каталогов, которые делятся на уровень управления, сервисный уровень, уровень доступа к данным и уровень объекта, Полная структура выглядит следующим образом:

6. Поскольку мы хотим использовать MyBatis для работы с базой данных, нам нужно добавить некоторые зависимости.Полный файл 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">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.demo02</groupId>
    <artifactId>demo_02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo_02</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--mybatis-spring适配器-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Связанные с базой данных

1. Далее нам нужно создать новую базу данных и генерировать сущности.Я не буду повторять создание данных.Поговорим об использовании идеи для быстрой генерации сущностей (Товаров).Скрипт базы данных выглядит следующим образом:

#创建商品信息表
create  table product
(
    pid int primary key not null auto_increment COMMENT"商品编号",
    pname varchar(50) COMMENT"商品名称",
    pprice DECIMAL(10,2) COMMENT"商品价格",
    ptime varchar(50) COMMENT"入库时间",
    pcount int COMMENT"库存",
    pstatus int COMMENT"商品状态" #0 代表下架,1代表上架
)COMMENT"商品信息表"

insert into product(pname,pprice,ptime,pcount,pstatus)VALUES
("苹果",11,"2019-10-1",11,1)

SELECT * from product

2. База данных указывает имя подключаемой базы данных, Пользователь указывает имя пользователя, Пароль указывает пароль, затем нажмите «ОК», а затем выберите каталог, из которого вы хотите создать объект.После завершения создания базовая структура настроен.

3. Код объекта продукта выглядит следующим образом.

package com.ssm.entity;
/*
* 商品实体类
* */
public class Product {

  private long pid;//编号
  private String pname;//名称
  private double pprice;//价格
  private String ptime;//入库时间
  private long pcount;//数量
  private long pstatus;//状态
  //无参构造方法
  public Product() {}
  //带参构造方法
  public Product(long pid, String pname, double pprice, String ptime, long pcount, long pstatus) {
    this.pid = pid;
    this.pname = pname;
    this.pprice = pprice;
    this.ptime = ptime;
    this.pcount = pcount;
    this.pstatus = pstatus;
  }

  public long getPid() {
    return pid;
  }

  public void setPid(long pid) {
    this.pid = pid;
  }


  public String getPname() {
    return pname;
  }

  public void setPname(String pname) {
    this.pname = pname;
  }


  public double getPprice() {
    return pprice;
  }

  public void setPprice(double pprice) {
    this.pprice = pprice;
  }


  public String getPtime() {
    return ptime;
  }

  public void setPtime(String ptime) {
    this.ptime = ptime;
  }


  public long getPcount() {
    return pcount;
  }

  public void setPcount(long pcount) {
    this.pcount = pcount;
  }


  public long getPstatus() {
    return pstatus;
  }

  public void setPstatus(long pstatus) {
    this.pstatus = pstatus;
  }

  @Override
  public String toString() {
    return "Product{" +
            "pid=" + pid +
            ", pname='" + pname + '\'' +
            ", pprice=" + pprice +
            ", ptime='" + ptime + '\'' +
            ", pcount=" + pcount +
            ", pstatus=" + pstatus +
            '}';
  }
}

SpringBoot интегрирует MyBatis на основе аннотаций

1. Далее нам нужно настроить файл конфигурации для подключения к базе данных, и настроить его в application.xml Файл application.xml выглядит следующим образом:

#连接数据库的驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#连接数据库的url
spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123456

2. Теперь мы можем управлять базой данных, писать ProductDao, ProductService, ProductImple, ProductController и настраивать основную программу SpringBoot.

Уведомление:

Поскольку наш вновь созданный пакет находится не в том же каталоге, что и основная программа SpringBoot, его нельзя просканировать. Когда проект запускается, его можно сканировать только в пакете, в котором находится @SpringBootApplication.Класс запуска — MainApplication.java, который является пакетом, в котором находится класс MainApplication.java, а другие контроллеры, сервисы и мапперы — в других пакеты, поэтому они не не сканируются. Поэтому нам нужно его настроить.

Файл ProductDao выглядит следующим образом:

package com.ssm.dao;
import com.ssm.entity.Product;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface ProductDao {
    @Select("select * from product")
    List<Product> findAllProduct();
}

Файл ProductService выглядит следующим образом:

package com.ssm.service;
import com.ssm.entity.Product;
import java.util.List;
public interface ProductService {
    List<Product> findAllProduct();
}

Файл ProductImple выглядит следующим образом:

package com.ssm.service.imple;

import com.ssm.dao.ProductDao;
import com.ssm.entity.Product;
import com.ssm.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductImple implements ProductService {
    @Autowired
    private ProductDao productDao;
    @Override
    public List<Product> findAllProduct() {
        return productDao.findAllProduct();
    }
}

Файл ProductController выглядит следующим образом:

package com.ssm.controller;

import com.ssm.entity.Product;
import com.ssm.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    //查询全部的商品信息
    @GetMapping("/product")
    public List<Product> findAllProduct(){
        return  productService.findAllProduct();
    }
}

Основной файл программы SpringBoot выглядит следующим образом:

package com.demo02.demo_02;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.ssm.controller","com.ssm.service"})
@MapperScan(basePackages = {"com.ssm.dao"})
public class Demo02Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo02Application.class, args);
    }

}

Нажмите «Выполнить», введите в адресной строке localhost:8080/product, появится следующий результат, поздравляем.

SpringBoot интегрирует MyBatis на основе файлов конфигурации XML.

1. Работаем теперь с БД вторым способом.Сначала аннотируем все конфигурационные файлы в application.xml, а потом создаем новый application.yml.Зачем использовать этот формат? Поскольку этот метод удобен и лаконичен, официальный представитель также рекомендует нам использовать этот тип.Вот некоторые связанные форматы:

server:
   port: 8801
eureka:
   client:
     registerWithEureka: false
     fetchRegistry: false
     serviceUrl:
      defaultZone: http://localhost:8801/eureka/

2.application.yml настроен следующим образом:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url:  jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
    username: root
    password: 123456
mybatis:
  typeAliasesPackage: com.ssm.entity
  mapperLocations:  classpath:mapper/*Mapper.xml

3. Мы хотим работать с базой данных через формат xml, то есть нам нужно написать файл Mapper.xml, создать новую папку Mapper в src/main/resources, а затем создать новый ProductMapper.xml.

4. Файл ProductMapper.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.dao.ProductDao">
    <!--查询全部商品信息-->
    <select id="findAllProduct" resultType="product">
        select  * from product
    </select>
</mapper>

5. Файл ProductDao выглядит следующим образом:

package com.ssm.dao;
import com.ssm.entity.Product;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface ProductDao {
//    @Select("select * from product")
    List<Product> findAllProduct();
}

6.Файл ProductService выглядит следующим образом:

package com.ssm.service;
import com.ssm.entity.Product;
import java.util.List;
public interface ProductService {
    List<Product> findAllProduct();
}

7. Файл ProductImple выглядит следующим образом:

package com.ssm.service.imple;
import com.ssm.dao.ProductDao;
import com.ssm.entity.Product;
import com.ssm.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ProductImple implements ProductService {
    @Autowired
    private ProductDao productDao;
    @Override
    public List<Product> findAllProduct() {
        return productDao.findAllProduct();
    }
}

8. Файл ProductController выглядит следующим образом:

package com.ssm.controller;
import com.ssm.entity.Product;
import com.ssm.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class ProductController {
    @Autowired
    private ProductService productService;
    //查询全部的商品信息
    @GetMapping("/product")
    public List<Product> findAllProduct(){
        return  productService.findAllProduct();
    }
}

9. Основной программный файл SpringBoot выглядит следующим образом:

package com.demo02.demo_02;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.ssm.controller","com.ssm.service"})
@MapperScan(basePackages = {"com.ssm.dao"})
public class Demo02Application {
    public static void main(String[] args) {
        SpringApplication.run(Demo02Application.class, args);
    }

}

10. Запускаем, результат такой же как и раньше

конец

Если вы считаете, что эта статья полезна для вас, пожалуйста, поставьте лайк автору.

Ян Цзянь, этот теплый мужчина:действительно очень полезно, ваша поддержка станет для меня движущей силой для продолжения написания статей, увидимся в следующей статье.

[Оригинал] | Эрланг Шэнь Ян Цзянь

Нелегко быть оригинальным, не будь проституткой. Эрлангшен Ян Цзянь, гребец-программист, который изо всех сил пытается выжить на переднем крае Интернета, занимается фронтенд-разработкой и хорош в обмене технологиями. Если вам нужно перепечатать, пожалуйста, свяжитесь с автором или сохраните исходную ссылку.Удобнее искать Erlangshen Yang Jian в публичном аккаунте WeChat или сканировать QR-код ниже.

Давайте станем свидетелями роста Erlang Shen Yang Jian! Больше хороших статей и обмена технологиями доступны в публичном аккаунте ниже. Добро пожаловать, чтобы обратить внимание.