天天看點

學習筆記(前後端分離開發-1)儲存資料

儲存資料

  • 建立maven項目,修改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>

    <groupId>org.example</groupId>
    <artifactId>Product3_5</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.8.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--mp代碼生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!-- 添加 模闆引擎 依賴 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>
           
  • 在resources下建立yml檔案,名稱一定是application,即application.yml
#配置web伺服器的預設端口号,預設是8080,*******這個端口會在webstrom中應用********
server:
  port: 8090
#配置資料源,druid加快連接配接,提高性能
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 123456
    url: jdbc:mysql://192.168.1.138:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
  #讀取我們操作映射的檔案
mybatis-plus:
  mapper-location: classpath*:com/product/xml/mapper/**Mapper.xml


           
  • 在src/main/java建立一個啟動類
package com.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.product.mapper")
public class AppStart {
    public static void main(String[] args) {
        SpringApplication.run (AppStart.class,args);
    }
}
           
  • 代碼生成器
package com.demo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.product.AppStart;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(classes = AppStart.class)
public class Coder {

    @Test
    public void genCoder(){
        // Step1:代碼生成器
        AutoGenerator mpg = new AutoGenerator();
        // Step2:全局配置
        GlobalConfig gc = new GlobalConfig();
        // 填寫代碼生成的目錄(需要修改)
        String projectPath = "C:\\Users\\Administrator\\AppData\\Roaming\\feiq\\Product3_5";
        // 拼接出代碼最終輸出的目錄
        gc.setOutputDir(projectPath + "/src/main/java");
        // 配置開發者資訊(可選)(需要修改)
        gc.setAuthor("ping");
        // 配置是否打開目錄,false 為不打開(可選)
        gc.setOpen(false);
        // 實體屬性 Swagger2 注解,添加 Swagger 依賴,開啟 Swagger2 模式(可選)
        //gc.setSwagger2(true);
        // 重新生成檔案時是否覆寫,false 表示不覆寫(可選)
        gc.setFileOverride(false);
        // 配置主鍵生成政策,此處為 ASSIGN_ID(可選)
        gc.setIdType(IdType.ASSIGN_ID);
        // 配置日期類型,此處為 ONLY_DATE(可選)
        gc.setDateType(DateType.ONLY_DATE);
        // 預設生成的 service 會有 I 字首
        gc.setServiceName("%sService");
        mpg.setGlobalConfig(gc);

        // Step3:資料源配置(需要修改)
        DataSourceConfig dsc = new DataSourceConfig();
        // 配置資料庫 url 位址
        dsc.setUrl("jdbc:mysql://192.168.1.138:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT");
        // dsc.setSchemaName("testMyBatisPlus"); // 可以直接在 url 中指定資料庫名
        // 配置資料庫驅動
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        // 配置資料庫連接配接使用者名
        dsc.setUsername("root");
        // 配置資料庫連接配接密碼
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // Step:4:包配置
        PackageConfig pc = new PackageConfig();
        // 配置父包名(需要修改)
        pc.setParent("com");
        // 配置子產品名(需要修改)
        pc.setModuleName("product");
        // 配置 entity 包名
        pc.setEntity("entity");
        // 配置 mapper 包名
        pc.setMapper("mapper");
        // 配置 service 包名
        pc.setService("service");
        // 配置 controller 包名
        pc.setController("controller");
        mpg.setPackageInfo(pc);

        // Step5:政策配置(資料庫表配置)
        StrategyConfig strategy = new StrategyConfig();
        // 指定表名(可以同時操作多個表,使用 , 隔開)(需要修改)
        strategy.setInclude("product");
        // 配置資料表與實體類名之間映射的政策
        strategy.setNaming(NamingStrategy.underline_to_camel);
        // 配置資料表的字段與實體類的屬性名之間映射的政策
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        // 配置 lombok 模式
        strategy.setEntityLombokModel(true);
        // 配置 rest 風格的控制器(@RestController)
        strategy.setRestControllerStyle(true);
        // 配置駝峰轉連字元
        strategy.setControllerMappingHyphenStyle(true);
        // 配置表字首,生成實體時去除表字首
        // 此處的表名為 test_mybatis_plus_user,子產品名為 test_mybatis_plus,去除字首後剩下為 user。
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);

        // Step6:執行代碼生成操作
        mpg.execute();
    }
}
           
  • 在controller包下的修改代碼如下
package com.product.controller;


import com.product.entity.Product;
import com.product.entity.Resmsg;
import com.product.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author ping
 * @since 2021-03-05
 */
@RestController
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private ProductService  product;
    //支援跨域
    @CrossOrigin
    @PostMapping(value = "/save")
    //@RequestBody作用是将輸入的值轉換成鍵值對,才會執行相關操作
    public Resmsg save(@RequestBody Product pro){
        boolean bool = product.save (pro);
        Resmsg mg=new Resmsg ();
        if(bool){
            mg.setCode (200);
            mg.setMsg ("成功");
            System.out.println ("成功");
        }else{
            mg.setCode (500);
            mg.setMsg ("失敗");
            System.out.println ("失敗");
        }
        return mg;

    }

}