1. 京淘学习架构流程图
京淘项目整体流程图设计. 在Linux系统实现运行. 上线运行!
2. 数据库物理模型图使用
2.1 安装数据库连接工具
1).安装SQLyong工具,填写注册码。新建数据库连接
2).导入京淘数据库
利用数据库导入工具,完成jtdb的导入。
2.2 通过命令导入数据库
在数据库文件所在目录下,运行cmd命令;登录数据库;导入数据库。
2.3 为什么需要物理模型图
原因说明:通过数据库工具虽然可以展现表相关信息.但是无法直观的检查表与表之间的关联关系是什么.例如主外键关联等.
所以需要一种能够直观的展现表与表之间关系的工具.并且该工具应该具有扩展性.可以根据不同的数据库类型动态生成Sql语句. (SQL92标准: 结构及关键字)-----PowerDesinger
2.4 PowerDesinger
PowerDesigner最初由Xiao-Yun Wang(王晓昀)在SDP Technologies公司开发完成。PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner独具匠心地将多种标准数据建模技术(UML、业务流程建模以及市场领先的数据建模)集成一体,并与 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流开发平台集成起来,从而为传统的软件开发周期管理提供业务分析和规范的数据库设计解决方案。此外,它支持60多种关系数据库管理系统(RDBMS)/版本。PowerDesigner运行在Microsoft Windows平台上,并提供了Eclipse插件。
2.5 PowerDesinger的安装和使用
安装:选择中文,一路下一步,选择自己安装的文件夹。
将汉化破解文件夹中的所有的文件全部复制,粘贴到PowerDesinge安装的根目录中即可.
2.6 新建第一个物理模型图
1).创建物理模型图.注意选择数据库类型.
2.7 常见的表结构设计
业务需求:
1.选准角度 角度不同,结果不同.
2.设定主外键关系
2.7.1 一对一
业务说明: user表---------user_info (详情表)
特殊情况: 双向一对一 主键和外键在同一字段标识.
2.7.2 一对多
案例: 部门和用户的关系 一对多.
用户和部门啥关系 一对一.
2.7.3 多对多
案例: 权限表-------角色表
分析: 一个权限 --------> 多个角色 一对多
一个角色 --------> 多个权限 一对多
结论:多对多实质就是双向一对多.
2.7.4 京淘项目表设计
3.SpringBoot加强
3.1 检查Maven私服镜像位置
检查Maven私服镜像的地址
<mirror>
<id>aliyun</id>
<name>aliyun for maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
3.2 IDEA安装SpringBoot插件
添加插件之后,重启IDEA即可.
3.3 IDEA创建SpringBoot
1).挑选SpringBoot
2).编辑模块内容
3).选择jar包依赖
3.4 SpringBoot项目创建方式2
3.4.1选择maven项目
3.4.2 构建项目
3.4.3 编辑POM.xml文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.4.4 编辑主启动类
package com.jt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication //添加SpringBoot注解
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class,args);
}
}
3.5 SpringBoot配置说明
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jt</groupId>
<artifactId>springboot_demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo1</name>
<description>入门案例</description>
<!--parent标签作用: 定义了SpringBoot中所有关联项目的版本号信息.-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<!--项目打包时,跳过测试类打包-->
<skipTests>true</skipTests>
</properties>
<!--开箱即用:SpringBoot项目只需要引入少量的jar包及配置,即可拥有其功能.
spring-boot-starter 拥有开箱即用的能力.
maven项目中依赖具有传递性.
A 依赖 B 依赖 C项目 导入A bc会自动依赖
-->
<dependencies>
<!--直接依赖web springMVC配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<!--springBoot-start SpringBoot启动项 -->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--SpringBoot重构了测试方式 可以在测试类中 直接引入依赖对象-->
<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>
<!--在项目打包部署时生效,如果不添加build,则程序发布时不然会报
项目中没有main方法.
-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.6 SpringBoot启动原理说明
SpringBoot特性: 开箱即用 引入少量(不引用)的配置,则可以实现项目的整合及使用.
3.7关于SpringBoot配置文件说明
3.7.1 关于pro文件说明
# pro配置文件语法说明
# 1.pro文件的结构是key-value结构
# 2.pro文件的值都是字符串结构. 无需添加引号""
# 3.key value之间使用=号连接.
# 4.springBoot程序中的配置文件 必须有application.pro/yml
server.port=8090
3.7.2 关于YML文件说明
# yml配置文件语法
## 1.key: value k-v结构使用:号(空格)连接
## 2.YML配置文件有层级关系.
## 3.YML配置文件注意缩进.
## 4.YML文件支持中文.内部编码是utf-8编码
server:
port: 8090
# 设定项目发布路径
servlet:
context-path: /jt
# /代表缺省值目录
3.8 配置文件为属性赋值的方式
3.8.1 业务场景
场景:需要实现文件上传操作,需要指定文件上传的目录.如果将上传文件的目录信息直接写死到代码中,这样的代码耦合性高.不便于扩展.
3.8.2 利用@Value方式赋值
3.8.2.1 编辑YML配置文件
# yml 1.key-value结构
# 2.key-value之间使用": "方法链接
# 3.YML配置文件有缩进的效果.
# 4.YML配置文件默认采用utf-8编码.
server:
servlet:
context-path: / #设定项目发布路径
port: 8090
#配置图片上传路径
image:
localDir: D:/java/IDEA/JT/images
e.8.2.2 编辑FileController
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class FileController {
//问题:如何将配置作为动态的获取?????
@Value("${image.localDir}") //spel表达式Spring框架所提供的.
private String localDir; // = "D:\java\IDEA\JT\images"; //如果放到这里则代码的耦合性高.
@RequestMapping("/getPath")
public String getPath(){
System.out.println("指定图片地址:"+localDir);
return "图片地址为:"+localDir;
}
}
3.8.3 指定配置文件为属性赋值
需求: YML配置文件是SpringBoot整合第三方配置文件,如果将业务配置与YML配置写到一起,则不方便管理.能否在指定的配置文件(pro)中实现属性的赋值.
3.8.3.1 编辑Pro文件
3.8.3.2指定字符编码格式
3.8.3.3 编辑FileController
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//导入配置文件,之后由Spring容器扫描
@PropertySource(value = "classpath:/properties/image.properties", encoding = "UTF-8")
public class FileController {
@Value("${image.localDir}") //spel表达式Spring框架所提供的.
private String localDir; // = "D:\java\IDEA\JT\images"; //如果放到这里则代码的耦合性高.
@RequestMapping("/getPath")
public String getPath(){
System.out.println("指定图片地址:"+localDir);
return "图片地址为:"+localDir;
}
}