day07 项目启动以及git
spring框架
spring 负责整合各种框架,把new对象的部分交给spring去做,对象new不出来,项目就启动不起来,这样可以有效保证所需要的对象都在容器中存在,后续的部分都可以顺利执行
控制反转:业务对象创建依赖资源的控制权反转给容器
依赖注入:容器把业务对象依赖的资源注入到业务对象
容器:IOC容器
业务对象:servlet/action/controller
依赖资源:service
mybatis用于取代dao层
git
用于版本控制,程序员们每天将自己写的代码传入git仓库里,
add将修改过的文件添加到Git的暂存区(staging area),这是准备提交的第一步;
再commit将暂存区的更改提交到本地仓库,这样更改就被保存在本地的版本历史中;
如果有需求也可以push将本地仓库的更改推送到远程仓库,通常是在团队协作时,将个人的更改共享给其他团队成员;
使用pull从远程仓库拉取最新的更改到本地仓库,这通常发生在开始工作前,以确保你的代码库是最新的。
commit到git的安装特别简单,一直点击下一步即可,通常使用bash命令行来运行这样比较快。
常用操控的命令行指令——
git clone http仓库网址 + 输入华为云用户名、密码可以将本地项目和git仓库联系起来
git cat hello.txt 看到文件的内容
git pwd 看到当前所在的目录
git add hello.txt 不用加引号
git status 获取当前你提交的文件
git log 看你是不是有任何的commit
--引号 必须英文的!!!
git commit [hello.txt] -m "add new file hello.txt" 上传到华为云仓库,“-m”不能省略!!!
用 git pull origin master 来更新本地的文件
debug
解决之前提出的下拉表格无法根据某一行的内容来决定是否显示表格的问题~!
具体就是根据每一行(记录)UserNum的计算值判断点击下拉之后是否可以显示表格,如果UserNum>0,就可以显示,如果=0就不显示表格。
因为UserNum也是计算得到的,所以不能和别的列一样直接从对象中获取,想了很多种方法tree-props属性还是v-if都不行,但是解决方法其实很简单,就是下拉列代码内部加一层div嵌套在template内部,再使用v-show,直接判断每一行(记录/对象)所包含的对象数组的长度即可,而并不能根据UserNum来判断
如图圈住的代码换成——
<div v-show="props.row.bankUserList != null&& props.row.bankUserList.length > 0">
附上完整代码——
<template><div><h1>Bank View</h1><el-button @click="find" type="primary">search</el-button><el-button @click="add" type="primary">add</el-button><br /><br /><br /><el-input v-model="inputValue" placeholder="请输入id"></el-input><br /><br /><el-table :data="bankList" style="width: 100%" ><el-table-column type="expand"><template slot-scope="props" ><div v-show="props.row.bankUserList != null&& props.row.bankUserList.length > 0"><el-table :data="props.row.bankUserList" style="width: 100%"><el-table-column label="userName" prop="userName"></el-table-column><el-table-column label="role" prop="role"> </el-table-column><el-table-column label="realName" prop="realName"></el-table-column><el-table-column label="password" prop="password"></el-table-column><el-table-column label="phone" prop="phone"> </el-table-column><el-table-column label="createTime" prop="createTime"></el-table-column><el-table-column label="updateTime" prop="updateTime"></el-table-column></el-table></div></template></el-table-column><el-table-column label="UserNum" width="180"><template slot-scope="props">{{ props.row.bankUserList != null ? props.row.bankUserList.length : null }}</template></el-table-column><el-table-column label="bankId" prop="bankId" width="180"></el-table-column><el-table-column label="bankName" prop="bankName" width="180"></el-table-column><el-table-column label="bankPhone" prop="bankPhone" width="180"></el-table-column><el-table-column label="introduce" prop="introduce" width="300"></el-table-column><el-table-column label="money" prop="money" width="180"></el-table-column><el-table-column label="rate" prop="rate" width="180"> </el-table-column><el-table-column label="repayment" prop="repayment" width="180"></el-table-column><!-- --><el-table-column fixed="right" label="操作" width="100"><template slot-scope="scope"><el-button@click="deleteBank(scope.row.bankId)"type="text"size="small">删除</el-button><el-buttontype="text"size="small"@click="updateBank(scope.row.bankId)">编辑</el-button></template></el-table-column></el-table><!-- 添加的对话框--><el-dialog :title="title" :visible.sync="dialogFormVisible"><el-form :model="form" :rules="rules" ref="bankForm"><el-form-itemlabel="bankName":label-width="formLabelWidth"prop="bankName"><el-input v-model="form.bankName" autocomplete="off"></el-input></el-form-item><el-form-itemlabel="bankPhone":label-width="formLabelWidth"prop="bankPhone"><el-input v-model="form.bankPhone" autocomplete="off"></el-input></el-form-item><el-form-itemlabel="introduce":label-width="formLabelWidth"prop="introduce"><el-input v-model="form.introduce" autocomplete="off"></el-input></el-form-item><el-form-item label="money" :label-width="formLabelWidth" prop="money"><el-input v-model="form.money" autocomplete="off"></el-input></el-form-item><el-form-item label="rate" :label-width="formLabelWidth" prop="rate"><el-input v-model="form.rate" autocomplete="off"></el-input></el-form-item><el-form-itemlabel="repayment":label-width="formLabelWidth"prop="repayment"><el-input v-model="form.repayment" autocomplete="off"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="cancel">取 消</el-button><el-button type="primary" @click="save">保 存</el-button></div></el-dialog></div>
</template><script>
import bankApi from "../api/bank";export default {name: "BankView",created() {this.findAndBankUser();},data() {return {bankList: [],bank: {},inputValue: "",dialogFormVisible: false, // 控制添加的对话框是否可见title: "",formLabelWidth: "100px",form: {bankName: "",bankPhone: "",introduce: "",money: "",rate: "",repayment: "",},rules: {bankName: [{ required: true, message: "请输入银行名称", trigger: "blur" },{min: 2,max: 50,message: "长度在 2 到 50 个字符",trigger: "blur",},],bankPhone: [{ required: true, message: "请输入银行电话", trigger: "blur" },{ min: 11, max: 11, message: "长度为11位", trigger: "blur" },],introduce: [{ required: true, message: "请输入银行介绍", trigger: "blur" },{min: 2,max: 200,message: "长度在 2 到 200 个字符",trigger: "blur",},],money: [{ required: true, message: "请输入银行存款金额", trigger: "blur" },],rate: [{ required: true, message: "请输入银行利率", trigger: "blur" }],repayment: [{ required: true, message: "请输入银行还款期限", trigger: "blur" },],},};},methods: {updateBank(id) {this.title = "编辑银行";this.dialogFormVisible = true;bankApi.findById(id).then((res) => {if (res.data.code == 200) {if (res.data.data == null) {this.infoMessage("数据库错误,请联系管理员");} else {this.form = res.data.data;}} else {this.errorMessage(res.data.message);}});},deleteBank(id) {this.$confirm("确定要删除编号为" + id + "的数据吗?", "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning",}).then(() => {bankApi.deleteBank(id).then((res) => {if (res.data.code == 200) {this.successMessage("删除了" + res.data.data + "条数据");this.findAndBankUser();} else {this.errorMessage(res.data.message);}});}).catch(() => {this.$message({type: "info",message: "已取消删除",});});},save() {// 验证表单this.$refs.bankForm.validate((validate) => {if (validate) {// 验证通过,可以提交数据if (this.form.bankId == null || this.form.bankId == 0) {bankApi.saveBank(this.form).then((res) => {if (res.data.code == 200) {this.successMessage("添加了" + res.data.data + "条数据");// this.successMessage();this.findAndBankUser();} else {this.errorMessage(res.data.message);}});} else {bankApi.updateBank(this.form).then((res) => {if (res.data.code == 200) {this.successMessage("修改了" + res.data.data + "条数据");this.findAndBankUser();} else {this.errorMessage(res.data.message);}});}this.dialogFormVisible = false;this.$refs.bankForm.resetFields(); //重置表单}});},cancel() {this.dialogFormVisible = false;this.$refs.bankForm.resetFields(); //重置表单},add() {this.title = "添加银行";this.dialogFormVisible = true;this.$refs.bankForm.resetFields(); //重置表单},find() {if (this.inputValue) {// alert(this.inputValue);this.findById();} else {this.findAndBankUser();}},findById() {bankApi.findById(parseInt(this.inputValue, 10)).then((res) => {// alert(parseInt(this.inputValue, 10));if (res.data.code == 200) {this.bank = res.data.data;if (this.bank != null) {this.$set(this, "bankList", []); // 清空原有数据this.bankList.push(this.bank);} else {this.infoMessage("没有找到该银行");}} else {this.errorMessage(res.data.message);}});},findAndBankUser() {bankApi.findAndBankUser().then((res) => {if (res.data.code == 200) {this.bankList = res.data.data;}});},successMessage(message) {this.$message({message: message,type: "success",});},infoMessage(message) {this.$message({message: message,type: "warning",});},errorMessage(message) {this.$message.error(message);},},
};
</script>
相关文章:
day07 项目启动以及git
spring框架 spring 负责整合各种框架,把new对象的部分交给spring去做,对象new不出来,项目就启动不起来,这样可以有效保证所需要的对象都在容器中存在,后续的部分都可以顺利执行控制反转:业务对象创建依赖资…...
学会网络安全:开启广阔职业与责任之旅
在数字化时代,网络安全已成为社会经济发展的重要基石。随着互联网的普及和技术的飞速发展,网络安全威胁日益复杂多变,对国家安全、社会稳定以及个人隐私构成了严峻挑战。因此,掌握网络安全技能不仅意味着拥有了一项高价值的职业技…...
UE5 镜头
只狼镜头 Spring Arm 中 开启 Use Pawn Control Rotation:让镜头跟着鼠标移动BP_Character(Self) 中关闭 Use Controller Rotation Yaw:不要让人物和鼠标移动Character Movement 的 Rotation Setting 中 关闭 Use Controller Desired Rotationÿ…...
SpringBoot如何实现简单的跨域配置
在SpringBoot中实现简单的跨域配置,主要通过全局CORS配置来完成。这通常涉及到实现WebMvcConfigurer接口并覆盖addCorsMappings方法。以下是一个简单的示例,展示了如何在SpringBoot应用中配置CORS策略以允许跨域请求。 首先,需要创建一个配置…...
vue列表进入详情页实现上一篇下一篇功能
概述:需求就是需要可以看列表,然后点击列表的右侧详情看详情,通过详情来实现新增上一份,下一份按钮来实现直接看之后的详情。 网上的解决方法有很多 1.后台获取将全量的id,前台再去直接取下一个id方式。(…...
kalman的python实现
前面的kalman都是matlab的,这里在理解的基础上,尝试使用python实现,力求理解更多的内涵。 需要的包 import numpy as np import matplotlib.pyplot as plt 代码 KF algorith demo by Leo 2020.01.06 ZJG CAMPUS,ZJU import numpy as np…...
查找算法:线性查找,golang实现
目录 前言 线性查找 代码示例 1. 算法包 2. 线性查找代码 3. 模拟程序 4. 运行程序 循环次数 假如目标值正好在数组中的第一位 假如目标值正好在数组中的第五位 假如目标值正好在数组中的最后一位 假如目标值不在数组中 线性查找的思想 1. 顺序遍历 2. 比较 3.…...
【图像识别】十大数据集合集!
本文将为您介绍10个经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 DanishFungi2020 发布方: Google 发布时间: 2021 简介: 补充材料:丹麦真菌 2020 - 不仅仅是另一个图像识别数据集为了支持细粒度植…...
C++ | Leetcode C++题解之第312题戳气球
题目: 题解: class Solution { public:int maxCoins(vector<int>& nums) {int n nums.size();vector<vector<int>> rec(n 2, vector<int>(n 2));vector<int> val(n 2);val[0] val[n 1] 1;for (int i 1; i &l…...
SSM学习11:springboot基础
教学视频 黑马程序员SpringBoot3Vue3全套视频教程,springbootvue企业级全栈开发从基础、实战到面试一套通关 springboot基础 搭建项目 修改配置文件 修改application.yml(后缀名不对,可以改成这个),配置数据库 spr…...
【前端 18】安装Node.js
Node.js 安装指南 在今天的博客中,我们将一起探讨如何在您的计算机上安装Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许你在服务器端运行 JavaScript 代码。无论您是前端开发者希望探索全栈开发,还是后端开发者寻…...
C#/Winform入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享
场景 作为一名C#的Winform开发者,势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。 当经历过几年企业级开发的磨炼,再回头看之前的开发过程、成长阶段发现确实是走了好多的弯路。 作为一名终身学习的信奉者,秉承Java体系需持续…...
springboot的表现层/控制层controller开发
第一步:新建文件和注入业务层对象 需要使用的注解: 第一个声明是restful风格开发 第二个是需要设置网页访问路径 RestController RequestMapping("/fuels")//http://localhost/fuels注入服务层对象: Autowiredprivate FuelServ…...
前端使用html2canvas在页面截图并导出,以及截图中含有图片时的跨域问题解决
1.引入html2canvas npm 安装或cdn引入 npm install html2canvas <script src"https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> 2.使用 html2canvas // 假设你有一个 id 为 "capture" 的元素 h…...
道可云元宇宙每日资讯|第十二届互联网安全大会在北京开幕
道可云元宇宙每日简报(2024年8月2日)讯,今日元宇宙新鲜事有: 第十二届互联网安全大会在北京开幕 7月31日,第十二届互联网安全大会(ISC.AI 2024)在北京国家会议中心盛大开幕。 本届大会以“打造…...
前端面试基础题(微信公众号:前端面试成长之路)
BFC、IFC、GFC、FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC。 到底什么是BFC、IFC、GFC和FFC Whats FC? 一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并…...
https执行过程,特点,作用
还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…...
【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现
摘要:伴随着当代社会物质水平的不断提高,人们越来越注重精神享受,看电影成为人们日常生活中重要的组成成分。本文将针对豆瓣上热门电影评论进行爬取,应用可视化分析更为形象地了解该电影的动态。该系统可以使得人们实时了解到有关…...
如何设计一个测试用例
前言👀~ 上一章我们介绍了什么是软件测试以及软件测试的一些基础概念,今天来聊聊如何设计一个测试用例,涉及到黑盒测试的测试方法 基于需求进行测试用例的设计 基于需求的具体设计方法 等价类 边界值 判定表法 正交表法 场景设计法 …...
黄金和原油市场波动背后的经济信号
黄金市场的波动与经济数据影响 周四,黄金市场经历了一天内的剧烈波动,从早盘的高点到纽约时段的急剧下跌。现货黄金价格最初上涨至2462.29美元/盎司,但随后迅速跌至最低的2434.72美元/盎司。最终,黄金收盘价报2445.84美元/盎司&am…...
【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
目录 编辑 第一部分:插值的基本原理及应用 1. 插值的基本原理 1.1 插值多项式 1.2 拉格朗日插值 1.3 牛顿插值 1.4 样条插值 2. 插值的Python实现 2.1 使用 NumPy 进行插值 2.2 使用 SciPy 进行插值 2.2.1 一维插值 编辑 2.2.2 二维插值 3. 插值…...
PCL-基于超体聚类的LCCP点云分割
目录 一、LCCP方法二、代码实现三、实验结果四、总结五、相关链接 一、LCCP方法 LCCP指的是Local Convexity-Constrained Patch,即局部凸约束补丁的意思。LCCP方法的基本思想是在图像中找到局部区域内的凸结构,并将这些结构用于分割图像或提取特征。这种…...
git 推送时出现错误 Locking support detected on remote “origin“
背景:代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番,其中有人提到可能时服务器磁盘满了,连到服务器上 df -h 查看, 发现根目录已经写满了: 使用命令行: d…...
劳动仲裁经验篇【赶紧收藏】
【劳动仲裁】纯经验干货分享,点个关注防止需要时找不到! 当公司决定搞你心态,变相逼退你时,无非就那么些手段,只要你能正确应对,并做好收集证据的准备,就不住畏惧。合理利用法律的武器维护自身…...
QT多媒体编程(一)——音频编程知识详解及MP3音频播放器Demo
目录 引言 一、QtMultimedia模块简介 主要类和功能 二、QtMultimedia相关类及函数解析 QAudioInput QAudioOutput QAudioFormat QMediaPlayer QMediaPlaylist QCamera 三、音频项目实战Demo UI界面 核心代码 运行结果 四、结论 引言 在数字时代,音频…...
MySQL使用教程 最最最实用的零基础教程 直接从安装开始教!!!!
数据构成了我们日益数字化的社会基础。想象一下,从移动应用和银行系统到搜索引擎,再到如 ChatGPT 这样的先进人工智能聊天机器人,这些工具若没有数据支撑,将寸步难行。你有没有好奇过这些海量数据都存放在哪里呢?答案正…...
pycharm怎么使用Anaconda和配置
打开Anaconda Prompt 要删除 Conda 环境 yolov5sconda,你可以使用以下命令: conda remove --name yolov5sconda --all这个命令会删除名为 yolov5sconda 的整个环境,包括其中安装的所有包和依赖项。请在命令提示符或终端中运行此命令。执行此…...
android中打包apk体积优化方案
1.在配置文件AndroidManifest中新增 android:extractNativeLibs"true" 2.在模块build文件下配置支持的cpu,一般配置64的就行了,多配一种so库体积大一倍,择优。 ndk { abiFilters arm64-v8a } 3.在模块builde文件下配置混淆除去无用的资源文件 注:三种…...
Kubernetes常见的3种部署方式
Kubernetes常见的3种部署方式 1. kubeadm2. 二进制包安装3. Minikube💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)作为容器编排领域的领导者,提供了多种部署方式以适应不同场景的需求。 1. kubeadm 简介:Kubernetes官方推荐的集群部署工具。特点:简单易用…...
什么情况?我代码没了
前两天检视代码时,发现PR里面有两个提交的描述信息一模一样,于是我提出应该将这两个提交合并成一个,保持提交树的清晰。 1 先储存起来! 而同事这时正在开发别的特性,工作区不是干净的,没法直接执行 git r…...
网站公司缺点/学企业管理培训班
用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件bootstrap (.yml 或者 .properties)application (.yml 或者 .properties)为什么会有这两种配置文件呢?大家都清楚它们的区别和具体使用场景吗?bootstrap/ application 的区别特意去翻了下 …...
科创纵横 网站建设/山西网络推广专业
事务的定义 我们常说事务事务,事务在软件设计中事务很重要,那么到底什么是事务呢? 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中指访问并访问并有有可能更新数据库中各种数据项的一个程序执行单元。事务通常由高…...
景德镇做网站公司/服务器租用
概述: 1)媒体捕获设备包括摄像机和麦克风,还包括屏幕捕获“设备”。对于相机和麦克风,我们使用navigator.mediaDevices.getUserMedia()捕获MediaStreams 。对于屏幕录制,我们改用navigator.mediaDevices.getDisplayMe…...
网站建设注意哪些方面/怎么做网站?
题意: 给出T条有权值的边,求从节点1到节点n的最短路径。 思路: 用了迪杰斯特拉算法(dijkstra),模板题。注意:输入的边有可能是重边的,就是重复输入同一个边,但是权值不…...
深圳市建设管理中心网站首页/平台推广是做什么的
免责声明:文中有一些图片来源自网络,如有版权请通知我删除,谢谢!网络启动最早用于无盘系统,那时的电脑只配备软驱也没有网络,系统启动速度慢而且功能简单。后期虽然有了硬盘后,但造价昂贵、管理…...
怎么在一个网站做多个页面/网站推广seo
什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入。 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因为…...