- 博客(55)
- 收藏
- 关注
原创 同一个文件有多个提交,不按照时间顺序合并代码,建议按照实际情况解决冲突保留提交
按照实际需求,最好是对照dev分支该文件的代码,如果是提交1和提交2都要上生产。肯定是不保留并右侧的提交1,保留左侧的uat分支的提交1和提交2,因为左侧的代码里已经包含了右侧的代码。总而言之,同一个文件有多个提交,不按照时间顺序合并代码,建议按照实际情况解决冲突保留提交的代码。解决冲突后注意提交的改动。如果是这个批次要上提交1和提交2,那么按照dev分支里该文件的代码解决冲突,结合实际情况保留代码。解决冲突后,别人会再把提交1从dev分支 cherryPick 到uta 分支,还是会报冲突的。
2025-01-24 21:24:11
211
原创 Result泛型类强制转换;强制转换优化;建议用 Result<Goods> result = this.get(param);不用Result result = this.get(param);
【代码】Result对象强制转换。
2024-12-13 19:39:02
122
原创 判断对象String类型字段不是空字符串““;字符串s是两个空格,s.length()=2;一个if的逻辑与&&判断:先判断对象不是null,再获取对象的字段继续判断,先对&&左边的表达式进行求值判断
System.out.println(“字符串s的长度:” + s.length());//字符串s的长度:0,当String s = " ";//barcodeParam1.getSupplierCodeMapping() 是null值,空字符串’‘,空格字符串’ ',字符串"1234" 都可以判断,不报错的。当 barcodeParam1.getSupplierCodeMapping() 是null值,空格字符串’ ',字符串"1234" 时,打印不是空字符串。
2024-12-12 21:23:55
147
原创 Revert Commit 撤回推送到远程的提交;Undo Commit 撤回还没推送到远程的本地提交(不想多次提交到远程可以这样)
切到test分支后,直接cherryPick了dev本地的提交到test, 之后推到test远程。导致dev远程没有该提交,但是test远程有该提交,别人从dev合并代码到test,可能会报冲突的。具体操作:切到test分支,选中该记录右键-Revert Commit ——可能要解决冲突,commit到test本地后,拉取远程最新代码——push到test远程。切到test分支 拉取远程最新代码,Revert Commit 该提交,那么test分支的本地和远程都会撤回该部分代码。
2024-12-04 15:01:41
256
原创 updateById(Po) 和 update(new Po(),updateWrapper)更新字段的情况
【代码】updateById(Po) 更新字段的情况。
2024-11-30 19:48:37
219
原创 不同环境不同的配置文件;不同地区的数据库连接
在Spring Boot项目中,如果存在application.yml、application-test.yml、application-prod.yml等多个配置文件,Spring Boot会根据当前激活的配置文件环境来决定使用哪个配置文件。综上所述,通过命令行参数、IDE设置、配置文件中的属性设置或代码判断等方式,可以确定Spring Boot应用程序当前激活的配置文件环境,并据此加载相应的配置文件。注意,如果某个配置项在多个配置文件中都存在,那么后加载的配置文件会覆盖先加载的配置文件中的相同配置项。
2024-10-04 21:39:06
459
原创 application.yml和bootstrap.yml
综上所述,application.yml和bootstrap.yml在Java的Spring Boot和Spring Cloud应用中各自扮演着重要的角色,它们共同协作以确保应用程序能够正确、高效地启动和运行。在Java的Spring Boot和Spring Cloud应用中,application.yml和bootstrap.yml是两个重要的配置文件,它们各自承担着不同的配置职责。
2024-10-04 21:32:12
567
原创 MyBatisPlus和MyBatis的分页查询原理;limit 和 offset 实现分页,limit a offset b(跳过b条数据后取a条数据); MyBatisPlus和MyBatis的区
综上所述,MyBatisPlus的分页查询原理是通过将大数据量集分割成较小的部分来返回结果,并提供了物理分页、内存分页和伪分页三种实现方式。MyBatisPlus的分页查询原理主要是通过将大数据量集分割成较小的部分来返回结果,以减少一次性加载和显示的数据量。3、当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量。综上所述,MyBatisPlus和MyBatis各有优势,开发者可以根据项目的具体需求和团队的技术栈来选择合适的框架。
2024-10-03 11:35:51
1701
原创 用 like concat 不用 like,为了防止sql注入;#{}和${}的区别和用法;#{}预防SQL注入的原理
其次${}本身设计的初衷就是为了参与SQL语句的语法生成,自然而然会导致SQL注入的问题(不会考虑字符过滤问题)。(1)#{}在使用时,会根据传递进来的值来选择是否加上双引号,因此我们传递参数的时候一般都是直接传递,不用加双引号,${}则不会,我们需要手动加(2)在传递一个参数时,我们说了#{}中可以写任意的值,则必须使用value;即:{}则必须使用value;则必须使用value;即:{value}
2024-08-27 21:18:54
1165
原创 AND 运算符的优先级高于 OR,AND后的OR语句要用括号括起来
SELECT * FROM student WHERE data_status = 0 AND (name LIKE ‘%李晨’ OR code LIKE ‘%101’)select* from student where data_status=0 and name like ‘%李晨’ or code LIKE ‘%101’在 SQL 中,AND 运算符的优先级高于 OR。为了确保逻辑的正确性,您可能需要使用括号来明确指定运算符的优先级。错误的:因为AND 运算符的优先级高于 OR,可能得到错误结果。
2024-08-21 19:27:05
332
原创 Get请求,@RequestParam(required = false) String name;url的格式可以没有 ?name=xxx
1、name什么都不输入:http://localhost:8090/goods/getGoodsByName?3、name是空格时 http://localhost:8090/goods/getGoodsByName?name=测试保存仓库1。入参name是 name=" " 或者name=" " ,查询结果都一样。入参name是name=“”入参name=测试保存仓库1。
2024-08-16 21:03:25
300
原创 入参是字符串时动态sql用@Param(“param“)里的param;入参查询类时,动态sql用@Param(“param“)里的 param.属性
如果 入参是Param 类,List getGoods(@Param(“param”) Param param);Param 类里有属性name, 动态sql用@Param(“param”)里的 param.属性。
2024-08-06 20:32:09
718
原创 MyBatisPlus框架会自动把动态sql里查询的表中的字段brandCode转换为brand_code,导致报错
【代码】MyBatisPlus框架会自动把动态sql里查询的表中的字段brandCode转换为brand_code,导致报错。
2024-07-30 21:44:22
167
原创 Variable ‘g‘ initializer ‘new Goods()‘ is redundan;Stu s = new Stu(); 和 Stu stu; 的区别
(2) 变量已经被默认初始化:在某些编程语言或上下文中,变量在声明时可能已经通过其类型的默认构造函数或值被初始化。如果随后你又显式地调用 new Goods() 来初始化它,那么这个额外的初始化步骤就是多余的。(3) 代码逻辑问题:可能你的代码逻辑并不需要立即创建 Goods 类的实例。也许你在稍后的某个时间点才需要这个实例,或者你可能只是忘记了移除测试代码。(1) 重复实例化:如果 g1 的值稍后会被重新赋值,那么最初的 new Goods() 调用可能就是不必要的。new Goods() 肯定好一些;
2024-07-30 19:52:16
401
原创 先new 对象,再调查询sql,查不到结果那么对象就是 null;先 new 集合, 再调查询sql , 查不到结果,那么list的大小为0,不是null
查不到结果,那么对象g 就是 null , 这时g1.setName(“查不到就是null,null还setName就报空指针”);所以说查询返回的结果是对象,一定要判断对象是否为null, 不为null 了才能进行对象属性的操作。现在的查询sql没有考虑到历史数据中负责人字段是null的情况,在查询sql的where条件里加了负责人字段不为null(保证能找到负责人发送邮件), 以为肯定能查出数据, 返回的对象肯定不是null。并且之后还对查询返回的对象的name属性进行了set,那么就会报空指针的。
2024-07-30 19:33:43
230
原创 try-catch-finally 捕获异常不在catch里抛出;循环遍历对象生成任务,捕获异常对象不抛出,不影响其他正常对象生成任务
1、无论catch里的异常有没有被抛出,finally里的代码都能执行;2、catch里的异常被抛出,try-catch之外或者try-catch-finally之外的代码都不能执行;3、catch里的异常不被抛出,try-catch之外或者try-catch-finally之外的代码都能执行,例如循环遍历对象生成任务,异常对象捕获但不抛出异常,那该异常对象就不会生成任务,但是不影响其他正常对象生成任务;4、try-catch 之间的代码:发生异常就会被捕获,发生异常后面的代码不会被执行,
2024-07-28 11:59:37
318
原创 入参的某个字段重写get()方法返回值1,实现类重新给该字段set值为值2,查询sql的where条件里该字段还是值1
查询入参重写了network的get()方法返回网络1,之后在实现类里重新给查询类的network字段set了值网络2,那么sql查询条件的网络network=‘网络2‘。
2024-07-26 18:14:33
357
原创 提取集合中元素的某个属性组成String类型的集合,并且属性的值要非null,最后拼接该String类型的集合得到字符串
使用的是Java 8或更高版本,可以使用String.join()方法,这个方法可以非常方便地将一个集合中的元素拼接成一个字符串,并允许你指定分隔符。这是手动拼接字符串的一种常用方法,尤其适合在循环中拼接字符串,因为它比使用+操作符更高效。方法二:使用StringBuilder或StringBuffer。
2024-07-24 23:46:34
328
原创 过滤出List集合的元素是Person对象,过滤出每个元素非null的name字段得到String类型的集合
【代码】过滤出List集合的元素是Person对象,过滤出每个元素非null的name字段得到String类型的集合。
2024-07-24 23:32:48
211
原创 pgsql的update语句在set里进行字段的运算 SET sort = sort +1
sort是null时,sort = sort +1 结果任然是 sort=null。– sort是1时,由1变成2。
2024-07-21 21:46:03
432
原创 ON CONFLICT (id) DO update SET 字段 = EXCLUDED.字段 和 ON CONFLICT (id) DO NOTHING 的用法
pgsql的id冲突更新sql、字段的非空限制和默认值设置
2024-07-04 19:52:32
1330
原创 关于selectOne报错的问题,建议加上 last(“limit 1“)
注意:selectOne 只是取查询结果中的一条数据,打出的sql语句的结尾没有limit 1限制。如果查询结果的条数大于1就会报错。如果查询结果是0条或1条是不报错的。为了保险起见在wrapper条件后加上 .last(“limit 1”)
2024-06-03 19:25:51
967
原创 使用Git的Stash,不提交第一个分支的改变到本地就切换到第二个分支,最后还能还原得到第一个分支所改变的代码
3、check out到dev2分支,点击Untash Changes,勾选Pop stash(还原后会删除这个stash), 最后点Pop Stash。例如在dev2 将这行代码: System.out.println(“dev2没改动”);改为System.out.println(“dev2改动了”);第一步完成后这行代码会还原为 System.out.println(“dev2没改动”);第三步完成后,这行代码回到 System.out.println(“dev2改动了”);
2023-12-24 23:57:37
567
原创 怎么将fork仓的dev分支的改动合并到uat分支,并且将改动推送到公共仓的uat分支呢?fork仓小圆圈刷新的作用;fork仓提交代码三步
6、在fork仓新建Pull Requests, 源分支和目标分支都选择uat分支,提交后等待项目管理员审核,就可以将自己fork仓的uat分支改动的结果推送到公共仓的uat分支了。2、fork仓切换dev分支并刷新,在本地仓拉取fork仓的dev分支最新代码,之后本地的dev分支改动推送到远程fork仓的dev分支。3、fork仓切换到uat分支并刷新,在本地仓拉取fork仓的uat分支最新代码(建议本地新克隆一个uat分支仓库,免得切换分支出错)1、本地仓在dev分支改完代码,commit到本地。
2023-12-20 21:30:25
603
原创 Mybatis的resultMap
参考:https://blog.youkuaiyun.com/weixin_45678130/article/details/113781320?
2023-10-22 23:35:04
95
原创 stream().map((item) -> {}).collect();stream.filter;ObjectUtils.isEmpty
stream.filter一般适用于list集合,主要作用就是模拟sql查询,从集合中查询想要的数据。filter里面的参数user是指集合里面的每一项//在集合中查询用户名为huxiansen的集合//在集合中查询出第一个用户密码为123456的用户过滤 , filter(item->{}) , item为每一项。按照自己的需求来筛选list中的数据map(), 提取对象中的某一元素,用每一项来获得属性(也可以直接用?对象::get属性())
2023-10-16 21:07:04
647
原创 提交代码三步走
Push被拒绝,提醒远程有改变,你要先把这个改变(远程test2改变了)合并,点击Merge按钮后,远程的tets2会覆盖本地的test2。远程的文件别人改了,我在本地没改,拉远程代码会提示:Update Project ,Merge incoming changes into the current branch。第一步:先点绿色对勾commit,选择要提交的文件(此时是提交到本地仓库),写上Amend 描述;结果是:远程的test2会覆盖本地的test2,本地的test1推送到远程。
2023-10-12 20:08:30
276
原创 IDEA,VSCode 推送代码到远程仓库;合并代码到不同分支;解决本地和远程的代码冲突
直接Push,会推送远程仓库失败,得到提示 wms: Everything is up-to-date。二、将一个分支更改的部分推送到另一个分支。要先commit再push,才能成功。一 、推送代码到远程仓库。
2023-10-06 12:12:17
9564
1
原创 快捷键 idea和vscode
1.根据关键字全局搜索(找到有这个代码的哪个文件哪一行),一般用于全局搜索接口2.根据关键字找文件(找到有这个关键字的文件),一般用于快速找文件Ctrl+Shift+N按文件名搜索文件 ,直接双击Shift 在ALL下搜索3.跳到方法签名,进入光标所在方法Ctrl+B4.跳到方法实现鼠标放在方法名上 Alt+Ctrl + B5.全局搜某个方法在哪些文件上调用鼠标放在方法名上 Alt + F76.代码上翻下翻,就是在上一次鼠标点的地方和下一次点的地方切换。
2023-10-05 22:01:07
1214
原创 自己定义listAll()方法实现查询表中所有字段,等同于MybatisPlus 中的list()方法
【代码】自己定义listAll()方法实现查询表中所有字段,等同于MybatisPlus 中的list()方法。
2023-09-13 00:45:41
284
原创 element前端页面
el-input v-model="searchModel.name" placeholder="学生姓名">新建-- 搜索栏 -->
2023-09-03 23:01:50
66
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人