项目实训经历1

项目实训1

项目实训1主要讲解了数据库,SpringBoot,模板技术,脚手架以及项目的部署,远程开发。
开发环境:win10 IDEA 2021 CentOS 8

1.阅读系统使用手册

1.角色的分类
角色名称角色描述可访问功能
经理公司经理主要负责把控项目流程、进度。分组管理
普通员工每个用户必备角色。日报管理、周报管理、周报查看
工作负责人当前工作(项目)的负责人日报审查、
人力负责人主要管理人员变动等周期定义

系统管理员不参与业务的操作,只参与后台管理部分

通过用例图描述业务,业务之间也有扩展。表示当前系统的角色和功能。

经理、工作负责人、人力负责人首先是普通员工(extend) 子类

多态:完成新的功能

不同的人属于不同的角色,拥有不同的权限

2.系统功能

角色关联功能(操作项)菜单项,准确是权限

角色是权限的载体

变化的配置数据字典

不变的写到代码里面

2.数据库设计

核心为ER图

三种关系:一对一,一对多,多对多

一对多,多对多的关系引出主外键

详细设计的每张表,1.表名大写(1.查询快,2.linux下区分大小写,系统可移植性强)

2.无驼峰命名下划线区分单词 3.表要加前缀模块名 4.中文注释

数据库设计,数据库表的模板

工作组信息(WM_GROUP)

名称代码数据类型长度精度主要的
主键GRP_IDchar(36)36TRUE
组名GRP_NAMEchar(36)36FALSE
类型GRP_TYPEvarchar(32)32FALSE
父节点GRP_PIDchar(36)36FALSE
状态GRP_STATEvarchar(32)32FALSE
成立时间GRP_START_TIMEdateFALSE
结束时间GRP_END_TIMEdateFALSE
排序GRP_NUMBERintegerFALSE

数据库设计要满足三大范式。

1.主键 数据记录独一无二 bigint java(long)

分布式避免自增长,一般用雪花算法生成,单体系统可以考虑自增长

数据库编码:utf8mb4

gbk中国的 utf8国际的

微信表情存放都为utf8mb4,数据库默认编码为utf8mb4

3.git安装及使用

git --version 查看版本 git是linux伪环境,有linux伪命令

1.添加环境变量(伪命令目录)D:\IDEA\Git\Git\usr\bin

检测git是否配好
在这里插入图片描述
2.通过cmd运行伪命令
在这里插入图片描述
git无密码,分布式

git初此设置用户名,邮箱

4.sql注意事项

sql文件放在根目录下

数据库sql

1.结构化sql 2.datasql

sql文件命名:模块名拼音(文件名建议小写)

CREATE DATABASE if not exists `zy-wm` default charset utf8mb4;
USE `zy-wm`;
DROP TABLE IF EXISTS `WM_BOOK`;
create table if not exists `BOOK`
(
    `BOOK_ID`    int auto_increment comment '图书的主键',
    `BOOK_NAME`  varchar(255)  not  null comment '图书的名称',
    `BOOK_PRICE` decimal(10, 2)  not null comment '图书的价格',
    primary key(`BOOK_ID`)
) comment '图书信息表';

字段的命名显而易见,为名词,日期统一

5.Maven本地配置

1.本地仓库

<localRepository>D:/Maven/MavenRepository/microservice</localRepository>

2.阿里云镜像

<mirror>
<!-- 使用阿里云 -->
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3.环境变量

MAVEN_HOME
在这里插入图片描述
path添加 %MAVEN_HOME%\bin

检测Maven是否配好
在这里插入图片描述
IDEA配Maven (建议配新项目设置New Projects Setup的那部分Maven)
在这里插入图片描述

6.建Maven项目

1.创建普通Maven项目(项目名不以数字开头)

Maven核心思想:约定大于配置

main/java目录:java代码 resourses目录:配置文件 test/java:单元测试 webapp:web开发

Maven的灵魂:pom.xml

当前项目的坐标:GAV
在这里插入图片描述
G:域名 A:项目名 V:版本号 properties里大于等于8

2.添加依赖

官网根据GAV找 https://search.maven.org/
自动提示

加入git版本控制,可以回退
.gitignore插件,创建.gitignore文件,添加忽略文件。.idea和.gitignore

子模块创建
module
项目实战
1.构建父子模块,用列表实现CRUD
https://gitee.com/yfeifei/crud
2.增加用户,能够返回自增的主键(MVC实现)
https://gitee.com/yfeifei/springbootdemo
3.实现用户登录显示数据库中的数据(全局异常处理使用)
https://gitee.com/yfeifei/spring-boot-login

7.VSC远程连接服务器

1.本地连接

本地通过git完成
1.生成公钥私钥
ssh-keygen -t rsa
2.本地hosts添加
ip 服务器名称
3.复制公钥
ssh-copy-id root@CentOS8.5

在这里插入图片描述

1.VSC连接

1.安装插件
在这里插入图片描述
2.使用插件
通过点击电脑形状,新建,输入ssh root@CentOS8.5 连接,最后如下图
在这里插入图片描述

8.Docker安装

  1. 安装必要的依赖包
    yum install -y yum-utils device-mapper-persistent-data lvm2
  2. 设置 Docker 的安装源
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    sudo yum makecache fast
  3. 安装 Docker 社区版本
    yum install docker-ce docker-ce-cli containerd.io
  4. 测试是否安装成功
    systemctl start docker && systemctl enable docker
  5. docker run hello-world
    在这里插入图片描述

9.Docker镜像

1.mysql

在这里插入图片描述

10.脚本运行

1.前期准备

在这里插入图片描述

linux 安装 jdk,gitMaven。jdk和git都可直接通过yum命令,省去了配置环境变量,Maven用weget
wget 地址
例如:下载3.6.3
wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf 压缩包名
例如解压 tar -zxvf apache-maven-3.6.3-bin.tar.gz
mv 文件名 maven363
例如移动文件 apache-maven-3.6.3
mv apache-maven-3.6.3 maven363
建议配置加上版本号

2.配置maven

export MAVEN_HOME=/usr/local/maven363
export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin(环境变量)
source /etc/profile (执行脚本)
配置阿里云仓库
从gitee克隆本地所上传的项目
git clone https://gitee.com/yfeifei/spring-boot-login.git
克隆后进入含有pom.xml的目录
git config --global credential.helper store

3.编写脚本

目录结构
在这里插入图片描述

mysql的Dockerfile56

FROM mysql:5.6
COPY sql/* /docker-entrypoint-initdb.d

spring-boot-login的Dockerfile

FROM openjdk:8
COPY target/SpringBoot1-2-0.0.1-SNAPSHOT.jar  app.jar
ENTRYPOINT ["java","-Xms256m","-Duser.timezone=GMT+8","-Xmx512m","-jar","/app.jar"]

rj.sh(家目录下)

# !bin/bash
result=` docker network ls | grep jdnetwork `
if [[ "$result" != "" ]]
then
    echo "已经创建了jdnetwork"
else
    docker network create jdnetwork
fi
cd project/docker/mysql
docker stop `docker ps -aq`
#删除mysql容器
docker rm jdmysql
#删除mysql镜像
docker rmi zymysql:5.6
#再次构建mysql镜像
docker build -f Dockerfile56 -t zymysql:5.6 .
#通过mysql镜像创建并运行容器
docker run -itd --name jdmysql -p3306:3306 --network=jdnetwork -v /my/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root zymysql:5.6
testPath="project/spring-boot-login"
cd ~/project
#指定的文件夹不存在,则从gitlab仓库克隆项目
if [[ ! -d "$testPath" ]]
then
     git clone https://gitee.com/yfeifei/spring-boot-login.git;
fi
cd spring-boot-login
git pull 
mvn clean install -Dmaven.test.skip=true
docker rm wmSpringboot
docker rmi wmboot
docker build -t wmboot .
docker run -itd --name wmSpringboot -p8080:8080 --network=jdnetwork wmboot
4.运行脚本

在这里插入图片描述
查看容器是否运行
在这里插入图片描述
通过外网访问
在这里插入图片描述
最后显示出了数据库中的数据

11.若依脚手架

1.克隆部署到本地

构建dev分支,运行通过表构建增删改查
在这里插入图片描述
自动产生grp_id (数据库字段为char)

import java.util.UUID;
String grp_id = UUID.randomUUID().toString();
 wmGroup.setGrpId(grp_id);

通过预览编辑生成的代码,加入字典管理

2.实现字典下拉框

1.对于工作组的分组设置字典
在这里插入图片描述
2.代码生成部分添加字典
在这里插入图片描述
3.查看生成代码部分

在这里插入图片描述
实际引用 required="required"必填项

     <div class="form-group">
                        <label class="col-sm-3 control-label">分组类型:</label>
                    <div class="col-sm-8">
                        <select name="grpType" class="form-control m-b" th:with="type=${@dict.getType('grp_type')}" required="required">
                            <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
                        </select>
                  </div>
   </div>

前端显示界面
在这里插入图片描述
在这里插入图片描述
以上通过字典回显,代码部分主要是

<script th:inline="javascript">
var grpTypeDatas = [[${@dict.getType('grp_type')}]];
$(function() {
            var options = {
                url: prefix + "/list",
                createUrl: prefix + "/add",
                updateUrl: prefix + "/edit/{id}",
                removeUrl: prefix + "/remove",
                exportUrl: prefix + "/export",
                modalName: "工作组信息",
                columns: [{
                    checkbox: true
                },
                { 
                    field: 'grpId',
                    title: '主键ID',
                    visible: false
                },
                {
                    field: 'grpName',
                    title: '分组名称'
                },
                {
                    field: 'grpType',
                    title: '分组类型',
                    formatter: function(value, row, index) {
                        return $.table.selectDictLabel(grpTypeDatas, value);
                    }
                }]
            };
            $.table.init(options);
        });
    </script>    
3.实现部分前端验证

jquery实现部分前端验证

<style> .col-sm-3:before{content: '*';color: red;}</style>
  <script th:inline="javascript">
        var prefix = ctx + "system/group"
        $("#form-group-add").validate({
            focusCleanup: true,
            rules:{
                grpName:{
                    required: true
                },
                grpNumber: {
                    required: true,
                    digits: true
                }
                },
            messages:{
                grpName:{
                    required:'请输入组名'
                },
                grpNumber:{
                    required:'请输入数字',
                    digits:'排序请输入整数'
                }
            }
        });
        function submitHandler() {
            if ($.validate.form()) {
                $.operate.save(prefix + "/add", $('#form-group-add').serialize());
            }
        }
    </script>

通过name字段实现,如图
在这里插入图片描述
使用若依脚手架的过程中要适应系统的代码,根据系统的代码去完善自己想要生成的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值