开发中的那些坑
我踩过的坑希望你能躲过
桥边驿语人
这个作者很懒,什么都没留下…
展开
-
Maven 的 Pom.xml 无法正常下载依赖包
今天说一个小问题,依赖包的下载。虽然看起来是小事,但是一不小心也能折磨你一整天。之前有个依赖包就困扰了我一段时间,oracle 的依赖包。依赖关系如下:<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.1.0</version></dependency>原创 2020-05-27 00:14:37 · 1402 阅读 · 0 评论 -
简单说明:list.forEach 中变量必须为 final 的问题
可能有些人没遇到过 list.forEach 中变量必须为 final 的问题,那就先举两个例子示例1,如下:public static void main(String[] args) { List<String> stringList = new ArrayList<>(); stringList.add("a"); stringList.add("b"); stringList.add("c"); stringList.add("d"原创 2020-05-27 00:13:54 · 5715 阅读 · 4 评论 -
简单说明:ArrayList 在 For 循环中进行删除而产生异常的原因
经常会有人这么对 list 进行遍历,错而不自知。示例代码如下:public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); for (String str : list) { if原创 2020-05-27 00:13:20 · 563 阅读 · 2 评论 -
Mybatis Plus 中 参数传递的优化之路
从项目开始使用 Mybatis Plus 到现在,对 Mapper 传递参数的方式做了多个版本的改进和优化。这篇文章主要讲解在改版和优化过程中遇到的问题,以及当时的一些想法。第一版:单个参数传递传递方式如下:UserMapper.javaList<UserVO> getUserList(String name);UserMapper.xml<!--查询所有用户信息--><select id="getUserList" resultMap="UserVOMap"&原创 2020-05-27 00:12:48 · 2884 阅读 · 0 评论 -
两张不同的表数据组成树形结构的解决办法
场景当需要将两张不同表的数据进行合并处理,并且两张表的主键均为自增,主键同是数字。这时候需要区分的、不同的表进行取值,可以使其中一张表的主键为负数,即-1,-2,-3。当需要把取出来的两张表分别再存进数据库时,要将之前取值是负数的主键转为正数,而转为正数的方式也很简单,也就是负负得正,即(-(-1)) = 1具体示例将系统表和菜单表的数据组合成树的形式,示例如下:[{ id: 1, lable: 基础数据, parentId: null, children: [原创 2020-05-27 00:07:48 · 2744 阅读 · 1 评论 -
关于表变动而导致的实体变动问题
因为表变动而导致的实体变动问题,出现这种情况较多的是版本迭代的时候。项目开发初期,表变动导致的代码改动量相对较小,改动后出现的问题也比较少。而在项目迭代的过程中,因为项目已经成型,大部分代码的逻辑和用法都已固定。此时表变动将有可能导致大量业务逻辑代码不可用。这篇文章就说说因为表变动而需要修改的代码部分。在此之前先说两个修改代码的小诀窍。修改代码的诀窍诀窍一:如果你用的开发工具是 IDEA 的话,你可以选中类名,然后按下 shift + F6 ,这时候会出现修改类名的对话框。在此处修改类名,将会把原创 2020-05-27 00:06:29 · 515 阅读 · 0 评论 -
结合 Mybatis,探讨 Oracle 中 in 与 not in 的陷阱
一、Oracle 中的 in 与 not in1. 正常情况下的使用查询语句使用 in 和 not in 的例子--表:T_USER,USER_ID 有 1,2,3,4,5,6--查询 userId 中包含1,2,3的数据--查询结果:1,2,3SELECT * FROM T_USER T WHERE T.USER_ID IN (1, 2, 3);--查询 userId 中不包含1,2,3的数据--查询结果:4,5,6SELECT * FROM T_USER T WHERE T.USER原创 2020-05-26 23:56:12 · 1086 阅读 · 0 评论 -
SQL 中 Left Join 转为 Inner Join 的实际应用
之前我写过一篇文章叫做,《SQL 中 关于Left Join 转为 Inner Join 的问题》。文章中给出的一个结论是:左关联的查询语句中,只要有 where 的过滤条件,那么该语句将被转为内关联。继续上一篇的内容,在这篇文章中我来说说在日常开发中的一个实际应用。说来简单,但是不知道的人也经常颇受困扰。应用:对 Left Join 之后的数据进行过滤,即对左关联之后的数据进行过滤还是用前一篇文章的例子来说明,建表语句和造数语句均可在前一篇找到,在此不做累赘。需求说明:进入界面的时候,需要根据需原创 2020-05-27 00:02:06 · 545 阅读 · 0 评论 -
一个“保存”按钮同时存在“增删改”三种操作,该如何去实现?
一般情况下,对表格中的数据进行“增删改”操作,都是直接操作数据库。现在有些项目因为设计或者优化的缘故,不对表格中的数据进行“增删改”,而是通过最后“保存”按钮的操作,一次性将数据传至服务器,由服务器对数据进行“增删改”。以下通过给用户分配角色这样的功能进行说明。操作界面大致如下(直接手画,略显粗糙,能看明白就行):序号用户角色1用户A角色A2用户A角色B...原创 2019-07-22 11:21:30 · 1957 阅读 · 3 评论 -
SQL中关于Left Join转为Inner Join的问题,即左关联转为内关联的问题
先说结论所谓实践出真知,个人也是因为对 Left Join 转为 Inner Join 的问题有疑问,于是逐一尝试,最后得出结论。从下面的实验结果很容易看出,在有左关联的查询语句中,只要有 WHERE 的过滤条件,那么该语句将被强制转为内关联。一、创建表演示使用,随便创建两张表--班级表CREATE TABLE T_CLASS( class_id NUMBER not null,...原创 2019-03-07 17:03:00 · 3435 阅读 · 4 评论 -
在IntelliJ IDEA中,SpringBoot项目通过devtools实现热部署
简要几个步骤:一、添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional>&原创 2018-06-13 13:36:10 · 1350 阅读 · 0 评论 -
在 Mybatis 中遇到的那些坑
1.报错信息:Invalid bound statement原因:在 mybatis 配置中有如下两行代码 bean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml")); bean.setMapperLocations(resolver.getResources("cla...原创 2018-06-11 09:33:34 · 1862 阅读 · 0 评论 -
Oracle 中关于 Between and 日期边界问题
之所以会写日期边界范围的问题,是因为我在查询日期的时候,刚开始数据都能正常获取,但是突然有些数据获取不到。刚开始以为是 Between and 的边界问题。但是经过一番折腾发现,发现是 Oracle 在对日期格式的字段进行查询时,会对字符串进行了隐式转换。以下就是错误的查询语句-- create_time 的时间为 2019/3/26 23:00:00SELECT * FROM T_CL...原创 2019-04-20 23:13:18 · 12811 阅读 · 4 评论 -
Java异常被抛出或被捕获之后,代码是否继续执行的问题
结论从下面的测试结果很容易看出,左关联的查询语句中,只要有 WHERE 的过滤条件,那么该语句将被转为内关联。一、创建表演示使用,随便创建两张表--班级表CREATE TABLE T_CLASS( class_id NUMBER not null, class_name VARCHAR2(100))--学生表CREATE TABLE T_STUDENT( student...原创 2019-04-20 23:08:16 · 465 阅读 · 0 评论 -
对 Stream 中 Map 与 ForEach 做个简单说明
经常会有童鞋把 Map 和 Foreach 用错,可能会出现如下用法:List<Student> studentChangeList = studentList.stream() .forEach(student -> student.setAge(99));有些编译器会直接报错,比如 IDEA。因为 ForEach 是没有返回值的,ForEach 处理过的...原创 2019-03-13 15:01:00 · 9372 阅读 · 0 评论 -
Mybatis Plus 2 升到 Mybatis Plus 3 时,oracle 自增序列的相关问题
一、Mybatis Plus 2,oracle 自增序列配置1. config.yml 配置文件#mybaits-plus配置,修改主键类型,mapper.xml、type 别名等mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml global-config: #主键类型 0:"数据库ID自增", 1:...原创 2019-01-17 09:10:20 · 6947 阅读 · 7 评论 -
Java项目启动时,oracle 驱动异常
报错信息:项目启动的时候,一直会报“registered driver with driverclassname=oracle.jdbc.driver.oracledriver was not found, trying direct instantiation.”。原因: Oracle 9i 之后,建议使用 oracle.jdbc.OracleDriver ,而不是 oracle.jdbc....原创 2018-12-18 08:51:41 · 5329 阅读 · 0 评论 -
探讨:在循环前与在循环中创建对象的区别
【业务场景】后端从数据库中获取数据传给前端。后端获得的数据格式:List前端需求的数据格式:Json原创 2018-08-19 19:21:44 · 1299 阅读 · 2 评论 -
当你无法发现问题所在时,不要简单地把代码或者数据还原
【场景】这几天有一位同事需要做与我一样的功能,而这个功能是我已经开发好了的,他只需直接把我的代码拿去修改就可以。结果,我的代码可以正常运行,他的代码在开启服务之后,控制台就不断有日志输出,开发环境进入了死机状态。他花了很长的时间去寻找问题的来源,但一直没有找到。之后,他跟我描述了他的问题。我提议帮他看看,然而得到他的回答是,他已经将代码还原到上一个版本了。也就是说,他放弃了寻找问题的来源。...原创 2018-08-18 18:50:21 · 767 阅读 · 0 评论 -
探讨:通过循环数组或者集合,插入数据库中没有的数据
【场景】要将一组物品 As 放入盒子 Bs 中,如果盒子有该物品,则不把该物品放入盒子。即,通过循环数组或者集合,插入数据库中没有的数据。【业务分析】经常会有初学者进行类似于如下的循环判断for(A a : As){ for(B b : Bs){ if (B.equals(A)) { break; } else {...原创 2018-08-08 23:18:55 · 860 阅读 · 0 评论 -
Mybatis 中 Oracle 的拼接模糊查询
一、结论这里先给大家看一下结论Oracle 中,拼接模糊查询的正确写法 SELECT A.USER_ID, A.USER_NAME FROM USER A AND A.USER_NAME like concat(concat('%','w'),'%') 或者 A...原创 2018-08-07 13:26:56 · 3181 阅读 · 0 评论