首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

一、需求背景 部门通常指的是在一个组织或企业中组成的若干人员,他们共同从事某一特定工作,完成共同的任务和目标。...在组织或企业中,部门通常是按照职能、工作性质或业务范畴等因素进行划分的,如财务部门、人力资源部门、市场部门等。...但在开发过程中,如果不建立数据表,则需要用选择结构进行判断赋值,所以就产生了大量的 if-else 代码。 本文的目标,就是消除这些 if-else 代码,用更高级的方法来实现!...在员工类中定义 部门编号 和 姓名 两个字段,代码如下。...同学们在开发自己的商业订单时,可以采取这个方案来处理大量的选择逻辑。

23120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    计算机视觉 OpenCV Android | Mat像素操作

    ; 1.2中逐行读取时的一个列(某行中的某个列其实就是一个数组元素而已)不是px, 而只是某个px的一个channel而已; 1.3 同理 即1.2 以及1.3 中,data的一个元素,不是px,而只是某个..., 0)的第一个px的第一个channel为起始元素,获取一个data长度的数据; 数据一个元素(channel)一个元素(channel)地存进数组data, 每个元素是某个px...++):外层 for 循环行; src.get(row, 0, data);get一整行的px数据,存进data; 形象地说, 是以 位置是(row, 0)即第一个px的第一个channel为起始元素...,交付整行数据; 形象地说, 是以 位置是(row, 0)的第一个px的第一个channel为起始元素, 提交一个data长度的数据,即一整行; 1.3 从Mat中一次读取全部像素数据 首先定义数组长度...所以Android开发者在使用OpenCV的时候, 需要注意应根据项目需求, 选择第二种或者第三种方法实现像素读写, 第一种方法只适用于随机少量像素读写的场合。 ---- 2.

    2.6K30

    移动端重构实战系列2——line list

    先说下整个过程中要解决的问题: retina 1px 分割线缩进 整行点击 单页应用或跳转页面 如何方便扩展 最简模式 html结构 .line-list>.line-item 结构方面,标签可以是ul.line-list...把1px挂在除第一个元素之外的伪元素before上,而第一个最上面和最后一个最下面的1px将会在父元素上实现,那样中间line-item之间的1px就很容易扩展实现缩进。...before的1px left定位来实现的,看到过有些方法是设置item的border-bottom,然后设置item的margin-left: 10px,这种实现方法是错误的,因为点击的不是整行了(缺了...&::before { content: ""; @include retina-one-px-border(top); z-index: 1; // 第一个元素点击的时候防止...选择模式分为单选和多选,单选同样可以保持结构不变,通过after元素生成选中的对钩;而多选则可以添加i.icon-checbox元素。

    39420

    移动端重构实战系列2——line list

    先说下整个过程中要解决的问题: retina 1px 分割线缩进 整行点击 单页应用或跳转页面 如何方便扩展 最简模式 html结构 .line-list>.line-item 结构方面,标签可以是ul.line-list...把1px挂在除第一个元素之外的伪元素before上,而第一个最上面和最后一个最下面的1px将会在父元素上实现,那样中间line-item之间的1px就很容易扩展实现缩进。...before的1px left定位来实现的,看到过有些方法是设置item的border-bottom,然后设置item的margin-left: 10px,这种实现方法是错误的,因为点击的不是整行了(缺了...&::before { content: ""; @include retina-one-px-border(top); z-index: 1; // 第一个元素点击的时候防止...选择模式分为单选和多选,单选同样可以保持结构不变,通过after元素生成选中的对钩;而多选则可以添加i.icon-checbox元素。

    62480

    移动端重构实战系列2——line list

    先说下整个过程中要解决的问题: retina 1px 分割线缩进 整行点击 单页应用或跳转页面 如何方便扩展 最简模式 html结构 .line-list>.line-item 结构方面,标签可以是ul.line-list...把1px挂在除第一个元素之外的伪元素before上,而第一个最上面和最后一个最下面的1px将会在父元素上实现,那样中间line-item之间的1px就很容易扩展实现缩进。...before的1px left定位来实现的,看到过有些方法是设置item的border-bottom,然后设置item的margin-left: 10px,这种实现方法是错误的,因为点击的不是整行了(缺了...&::before { content: ""; @include retina-one-px-border(top); z-index: 1; // 第一个元素点击的时候防止...选择模式分为单选和多选,单选同样可以保持结构不变,通过after元素生成选中的对钩;而多选则可以添加i.icon-checbox元素。

    31510

    Vim从理解到应用

    1、Vim模式介绍 Vim具有6种基本模式和5种派生模式,我们将只简单介绍下6种基本模式: 普通模式(Normal mode)(常用) 在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。...这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。...或^ 到行头 $ 到行尾 f 向后搜索并跳转到第一个匹配的位置(很实用) F 向前搜索并跳转到第一个匹配的位置(实用) t 向后搜索并跳转到第一个匹配的位置之前的一个字母...3.1.3、修改(替换)操作 替换是针对普通模式下的操作,具体操作间下表: 命令 说明 r+ 将游标所在字母替换为指定字母 R 连续替换,直到按下Esc cc 替换整行,即删除游标所在行...5、总结 VIM 如果不是经常使用,很容易忘记它的使用技巧,需要经常复盘,久而久之也就养成了手指记忆。

    53020

    强化学习(三)用动态规划(DP)求解

    最简单的方法就是贪婪法。考虑一种如下的贪婪策略:个体在某个状态下选择的行为是其能够到达后续所有可能的状态中状态价值最大的那个状态。还是以第三节的例子为例,如上面的图右边。...当我们计算出最终的状态价值后,我们发现,第二行第一个格子周围的价值分别是0,-18,-20,此时我们用贪婪法,则我们调整行动策略为向状态价值为0的方向移动,而不是随机移动。也就是图中箭头向上。...而此时第二行第二个格子周围的价值分别是-14,-14,-20, -20。那么我们整行动策略为向状态价值为-14的方向移动,也就是图中的向左向上。     ...比如当$k=2$时,第二行第一个格子周围的价值分别是0,-2,-2,此时我们用贪婪法,则我们调整行动策略为向状态价值为0的方向移动,而不是随机移动。也就是图中箭头向上。...而此时第二行第二个格子周围的价值分别是-1.7,-1.7,-2, -2。那么我们整行动策略为向状态价值为-1.7的方向移动,也就是图中的向左向上。

    1.3K40

    100 条 Linux vim 命令备忘单,收藏起来随时备用!

    或者ZQ 退出而不保存更改 :qa 退出所有缓冲区 :cq 永远退出,不写 :wq 写入当前文件并退出 :wqa 退出并写入所有缓冲区 :wq!...强行写入当前文件并退出 插入命令备忘单 a 在光标后插入 A 在行尾插入 i 在光标前插入 I 在行中的第一个非空白之前插入 gI 在第 1 列中插入 o 在光标下方开始新行并插入 O 在光标上方开始新行并插入...向后搜索 * 向前搜索光标下的单词 # 向后搜索光标下的单词 r 替换光标位置的单个字符 R 替换从光标位置开始的字符 cc 替换整行 :%s/search/replace/g 用replace替换每次出现的搜索...:%s/search/replace/gc 用确认替换替换每次出现的搜索 撤消和重做命令备忘单 u 撤消上次更改 Ctrl+r 重做已撤消的更改 标签命令备忘单 :tabe 在新选项卡中打开文件...在命令模式下执行: v允许选择文本片段的可视模式 V允许选择整行的可视模式 CTRL+v允许选择文本块的视觉块 在可视化模式下执行: >向右缩进 <向左缩进 y复制 d剪切 ~大小写切换 u将选中文本转换为小写

    1.5K20

    C语言字符串IO

    常见的一个错误写法:scanf要把信息拷贝到参数指定的地址上,而此时的参数是一个未初始话的指针,那么可以指向程中的任意的地址,可能会擦写掉程序中的数据和到吗,导致程序中断。...fgets()函数存储’\n’的好处与坏处: 好处:是对于存储的字符串而言,检查末尾的换行符可以判断是否成功读取了一整行,如果不是一整行则妥善处理一行中剩下的字符。...gets_s函数和fgets函数的区别是: gets_s()只从标准输入中读取数据,所以不需要第三个参数。 如果geets_s()函数读取到换行符,会丢弃它。...由此可见如果输入太长,超过数组可容纳的字符数时,fgets函数最容易使用,而且可以选择不同的处理方法,如果想让程序急促使用输入行中超出的字符可以参考案例二中的处理方法,如果想丢弃初入行的超出字符,可以参考案例三中的处理方法...鉴于此,fgets()通常是处理特殊情况的最佳选择。 s_gets()函数 上面案例演示了fgets()函数的一种使用方法:读取整行输入并用空字符替换换行符,或者读取一部分输入,并丢弃其余部分。

    4.6K10

    vim常用命令总结

    所以"/was$"只匹配位于一行末尾的单词was,所以"/^was"只匹配位于一行开始的单词was。 22.匹配任何的单字符   .这个字符可以匹配到任何字符。...28.替换单个字符   "r"命令不是一个操作符命令。它等待你键入下一个字符用以替换当前光标下的那个字符。"r"命令前辍以一个命令记数是将多个字符都替换为即将输入的那个字符。...需要在Normal模式下执行,它重复的是命令,而不是被改动的内容, 30.Visual模式 按"v"可以进入Visual模式。移动光标以覆盖你想操纵的文本范围。同时被选中的文本会以高亮显示。...$    由游标所在位置至该行的最后一个字元。 0    由游标所在位置至该行的第一个字元。  整行动作 dd    删除整行。 D    以行为单位,删除游标后之所有字元。...:10,20s/^/ /  将第10行至第20行资料的最前面插入5个空白。 (vim) /字符串   后边输入查询内容可保存至缓冲区中,可用↑↓进行以往内容选择。

    1.3K10

    如何使特定的数据高亮显示?

    所以,在这里要提醒小伙伴们,如果想实现整行的突出显示,“突出显示单元格规则”是不适用的。“突出显示单元格规则”顾名思义,就是对符合规则的“单元格”进行设置,而不是对“数据行”进行设置。...其它excel内置的条件规则,也一样有这样的限制。 那么,要实现整行的条件规则设置,应该如何操作?既然excel内置的条件规则已经不够用了,下面就自己动手DIY新规则吧。...然后在公式框里输入公式:=$F2>20000,再单击下方的“格式”,对格式进行设置。在此处演示中,我选择填充黄色。...$F2,F2单元格前面的这个符号$,是绝对引用符号,表示锁定的意思,也就是锁定F列,只根据F列的数据来进行判断,F列为绝对引用。 那为什么只锁定列,而不锁定行呢?为什么F2这个“2”不锁定?...像这种只锁定列而不锁定行,或只锁定行而不锁定列的,在excel里又称为“混合引用”。 最终效果如下图所示: 只有薪水大于20000的数据行,才会被突出显示。

    5.6K00

    移动端重构实战系列5——form元素

    右边的箭头可点击范围 line list设计95%都是整行点击,所以不管你点哪,都是触发整行的点击事件,右边的箭头就是个指引而已,所以伪元素生成是没有问题的;而form就不一样了,右边箭头是真的要挂载事件的...,所以除了直接使用元素外,点击范围一定要设计合理,总不能箭头多大就多大,那操作起来就不方便了,同理input框我们也需要设计成整行的高度,方便点击输入。...-- 表单元素 --> p.field-value.placehold 选择值或默认值或选择说明 --> i.icon-v-right 元素after设置content,而ok的则通过伪元素after绘制,为了达到和前面三个一样的粗细,使用了transform的scale search demo见sheral search 主要说下第二个搜索框...它其实是个假的搜索输入框,点击跳转到真的搜索,所以居中的icon和文字其实并不是input的内容。

    90950

    移动端重构实战系列5——form元素

    ,都是触发整行的点击事件,右边的箭头就是个指引而已,所以伪元素生成是没有问题的;而form就不一样了,右边箭头是真的要挂载事件的,所以除了直接使用元素外,点击范围一定要设计合理,总不能箭头多大就多大,那操作起来就不方便了...,同理input框我们也需要设计成整行的高度,方便点击输入。...-- 表单元素 --> p.field-value.placehold 选择值或默认值或选择说明 --> i.icon-v-right 元素after设置content,而ok的则通过伪元素after绘制,为了达到和前面三个一样的粗细,使用了transform的scale search demo见sheral search 主要说下第二个搜索框...它其实是个假的搜索输入框,点击跳转到真的搜索,所以居中的icon和文字其实并不是input的内容。

    36020

    移动端重构实战系列5——form元素

    : 输入框可点击范围 右边的箭头可点击范围 line list设计95%都是整行点击,所以不管你点哪,都是触发整行的点击事件,右边的箭头就是个指引而已,所以伪元素生成是没有问题的;而form就不一样了,...右边箭头是真的要挂载事件的,所以除了直接使用元素外,点击范围一定要设计合理,总不能箭头多大就多大,那操作起来就不方便了,同理input框我们也需要设计成整行的高度,方便点击输入。...-- 表单元素 --> p.field-value.placehold 选择值或默认值或选择说明 --> i.icon-v-right 元素after设置content,而ok的则通过伪元素after绘制,为了达到和前面三个一样的粗细,使用了transform的scale search demo见sheral search 主要说下第二个搜索框...它其实是个假的搜索输入框,点击跳转到真的搜索,所以居中的icon和文字其实并不是input的内容。

    37810

    vim 从嫌弃到依赖(19)——替换

    g 是一个标志位,表示修改整行中的所有匹配项,而不仅仅是修改第一个匹配项。 标志位 上面的例子中我们使用了一个 g 作为标志位,其实还有其他的标志位。...即这里输入 :%s/python/vim 我们发现它只替换了每一行的第一个出现 python 的地方,同一行后面的 python 不受影响。...但是 g 作用范围应该是整行,而我们选中的是文本中的所有行。看起来效果是一样,但是理解起来确实有差距。...手动选择是否需要替换 有的时候我们并不希望盲目的对所有内容进行替换,而只替换其中的部分内容。例如上述的文本中,我们只想替换第二行的最后一个 python 为vim。那么可以使用 c 标志。...各位小伙伴可能还会有疑惑,目前介绍的查找替换似乎只针对的是某个文件,如果我想在项目中进行全局替换该怎么办呢?请各位想想之前我们是如何在多个文件中执行宏的。这部分就不做介绍,算是留的一个练习吧。

    3.3K10

    Linux grep命令教程

    示例部分展示了如何使用这些参数进行基本搜索、忽略大小写的搜索、反向匹配、显示行号、统计匹配行数、递归搜索、使用正则表达式、匹配整个单词或整行、显示匹配行及其前后行、指定多个模式、只输出匹配的部分、搜索包含空格的字符串...-F:将模式视为固定字符串,而不是正则表达式 -w:匹配整个单词 -x:匹配整行 -A n:显示匹配行及其后n行 -B n:显示匹配行及其前n行 -C n:显示匹配行及其前后各n行 -h:输出时不显示文件名...递归搜索(-r或-R) 在当前目录及其子目录中的所有文件中递归搜索指定字符串: grep -r "hello" . 输出: ./example.txt:Hello, world! ....匹配整行(-x) 只匹配整行: grep -x "Hello, world!" example.txt 输出: Hello, world! 10....只输出匹配的部分(-o) 只输出匹配的部分,而不是整行: grep -o "hello" example.txt 输出: hello hello 13.

    46410

    mysql 中的innoDB 引擎的B+树索引

    B+树索引就是传统意义上的索引,底层数据结构就是根据平衡点二叉树数据结构演化而来,但是他并不是一个二叉树,之所以其中的B指的是Balance而不是binary。...还有一个比较容易忽略的问题就是B+树索引只能定位到所在行的数据页,而不能定位到具体的数据value值。...在B树中每一个元素只能出现一次,有可能在叶子节点,也有可能在分支节点上,但是在B+树中 ,出现在分支节点中的元素会被当作他们在该分支节点位置的中序后继者(叶子结点)中再次列出。...由于实际的数据页只能按照一棵B+树进行排序因此每张表都只有一个聚集索引。一般SQL的优化器优选选择聚集索引,因为他拥有整行的数据,也就是避免回表查询。...索引的类型,innoDB只支持B+树索引是Btree Comment 注释 CArdinaility的值非常重要,优化器在选择索引的时候会参考本值。

    94930
    领券