背景

2021 年说话间就要过期了,今年干的几件事情有:

  1. 年初调研了三个任务调度框架。
  2. 4 月到 9 月参与了一个产品的开发,SpringCloud + React ,基本掌握了微服务的知识,也熟悉了 React 这个前端框架,惊奇的发现是 React 竟然有 XSS 预防能力。
  3. 10 月至 12 月,参与了一个简单项目的开发。

本文整理10 月以来项目开发过程中遇到的简单的技术问题。

数据库操作

MyBatisPlus + Oracle 分页查询及联合查询的知识:

  1. 分页查询 IPage 查询中的 OrderItem 排序列名称是数据库表的字段名称,而不是实体字段。
  2. DAO 分页查询结果会放到 IPage 入参中,所以方法定义时不需要返回 IPage 对象,直接使用入参即可。
  3. Oracle 存储一个中文的长度是 2。
  4. Oracle 批量将 byte[] 保存到 BLOB 字段时,不能使用 Union all, 因为它使用 from dual 虚表查询获取数据的方式,因为从虚表取数据字段长度介于2000-4000之间时,Oracle 会将字段类型转为 long 类型,会抛出异常 ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值
  5. Timestamp 类型的字段作为查询条件时,参数传递类型也需要是时间戳。
  6. DAO测试,list 列表为空的时候,执行批量插入SQL报异常:java.sql.SQLSyntaxErrorException: ORA-00926: 缺失 VALUES 关键字。
  7. 事务提交问题:新开启的事务,下一次查询并没有提交,直到下一次有写操作才提交。但如果查询想得到立即的数据,应该用 select for update

MyBatisPlus + Oracle 联合查询排序问题

Oracle 区分大小写,多表关联查询时,为了方便映射查询结果,可以设置字段别名,字段别名如果用双引号,需要转义。

例如,这个联合查询 SQL :

SELECT 'tableA' source,  ID "Id" ,CREATE_TIME createTime
FROM  tableNameA
UNION ALL
SELECT 'tableB' source,  ID "Id"  ,CREATE_TIME createTime
FROM  tableNameB

如果用 createTime 进行排序,因为没有引号,可以直接设置:

orderItem.setColumn("createTime");

如果用 ID 字段排序,由于别名用了双引号,所以需要转义:

orderItem.setColumn("\"Id\"");

React 前端

  1. 设置打包目录的方式。
  2. Form.Item 表单中的数据初始化,用 initialValue
  3. 函数绑定 this 的方式,显式绑定和 lambda 表达式绑定,以及不绑定 this 出现的事件提前被触发、undefined 等问题。
  4. React Table 设置某一列文本显示区域的属性是:align: 'right'
  5. Upload 插件的 beforeUpload 返回 falsePromise.reject 时,只用于拦截上传行为,不会阻止文件进入上传列表,如果需要阻止列表展现,可以返回 Upload.LIST_IGNORE 实现。
  6. setState 是异步的,如果要在设置完成后执行某些动作可以添加回调函数。
  7. 如何获取 Form 表单下 Table 中的表单。

SpringBoot

  1. 使用打包插件 exec-maven-pluginprepare-package 阶段阶段已经完成了 class 的编译,如果此时要执行额外的 npm run build 命令将前端工程打包到 resources 目录下,那么最终的 jar 包中是不会包含新生成的资源文件的。所以如果 React 前端工程变化了,首次打包后不会生效。
  2. Timestamp 类型的实体,默认生成的 JSON 格式是奇怪的,需要特殊设置格式如:@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
  3. 不能对 Collections.emptyList() 这个返回对象进行集合操作。

其他

  1. word 全局替换:添加换行符号用 ^l
  2. Linux 查找某个进程具体的启动时间:ps -eo pid,lstart,etime|grep PID

后记

本文算是对今年的一个小结吧,今天在思考一个问题,有没有一种前端页面一劳永逸的数据定制框架呢?就是任何一个需要存储数据、从页面录入数据的工程,React 页面都可以定制数据结构的录入、编辑、回显等基本功能。

因为业务不同,貌似不太容易。想起一个论述母鸡与前端的文章 《母鸡与前端工程师》:

中国是世界鸡蛋第一大国。据统计,2013年全国产量5750亿枚,一个中国人平均一年要吃掉400多枚鸡蛋。
那么中国需要多少只母鸡,才能达到这样的产量?
据说,普通母鸡一年大概生200~250枚鸡蛋。养鸡场里面最优秀的母鸡,一年可以达到320枚。以250枚计算的话,中国至少需要有23亿只母鸡,才能满足全国人民吃蛋的需求。
如果把鸡蛋换成网页,同样的问题就是,中国一年需要生产多少张网页,才能满足人民消费的需要?
去年,我国手机用户超过13亿,智能手机用户超过6亿。就算其中只有一半人上网,那也是3亿多人。这么多人,每天都有几十分钟或者几个小时,要使用手机上网。全体中国人一年消费的网页和App的数量,是一个天文数字。

文章得出一个结论:

鸡蛋是母鸡生出来的,网页从哪里来?归根结底,所有页面都需要工程师做出来。那么多互联网公司,每家公司都需要前端工程师。而全国的前端工程师,目前可能总共有几十万人,对比那么大的内容消费量,肯定是远远不够的(想一想吧,全国的母鸡有23亿只)。这样一想,工程师抢手就不奇怪了。
还有一个很重要的原因,学校不教前端开发,可能会有一些相关课程,但不会系统地教,所有前端工程师都是靠自学的。这也导致了供给偏少。

未来前端工程师会收到 AI 的冲击吗?
如果后端转前端,会不会好一些呢?
——2021 年 12 月 31 日书

MyBatisPlus + Oracle 联合查询排序问题整理,2021 年最后一篇相关推荐

  1. oracle查询表字段sql语句怎么写,oracle联合查询并更新一个表字段的sql语句

    更新某一个字段写起来简单,也容易理解: UPDATE tablea A SET A.name=(select name from tableb B where A.id=B.id) 更新多个字段就显得 ...

  2. oracle主从关系表查询,Oracle 主从表联合查询解决方法

    Oracle 主从表联合查询 表A id   type   name 1    E      AA 2    F 表B id   Aid    name 1    2      BB 2    2   ...

  3. oracle中文字段名怎么查询_sql注入联合查询总结

    点击上方蓝色字关注我们 联合查询注入利用的前提: 前提条件:页面上有显示位 联合注入的过程: 1.判断注入点 2.判断是整型还是字符型 3.判断查询列数 4.判断显示位 5.获取所有数据库名 6.获取 ...

  4. Oracle ODI 12c之多表联合查询以及定时任务设置

    本文介绍如何通过ODI进行多表联合查询并设置定时任务.准备工作如下: 准备物理方案和逻辑方案: 创建模型并通过"逆向工程"同步方案: 创建项目(根据实际情况创建或者使用现有的): ...

  5. oracle多表联合查询更新,ORACLE 两表关联更新三种方式

    不多说了,我们来做实验吧. 创建如下表数据 select * from t1 ; select * from t2; 现需求:参照T2表,修改T1表,修改条件为两表的fname列内容一致. 方式1,u ...

  6. Oracle多表联合查询

    -多表联合查询: –当需要获取的数据分布在多张中,考虑使用联合查询 –SQL92方式 –SQL99方式 –SQL92方式 –笛卡尔积:将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积. –结果的 ...

  7. java 索取了多表联合查询分页,mybatis-plus多表联合分页查询

    1.entity层要写个Vo实体类 2.controller @AutoLog(value = "员工CURD-分页列表查询") @ApiOperation(value=" ...

  8. oracle 外键子查询,外键、联合查询、子查询

    1.外键: 增加外键 创建表的时候增加外键:在所有的表字段之后,使用foreign key(外键字段) references 外部表(主键字段) 在新增表之后增加外键:修改表结构,使用alter ta ...

  9. Oracle数据库经典案例之学生选课四表联合查询

    四表联合查询之学生选课查询 问题及描述: 学生和成绩表 学生是主表,成绩是子表 课程和成绩表 课程是主表,成绩是子表 老师和课程表 老师是主表,课程是子表 1.学生表 Student(S#,Sname ...

最新文章

  1. 心得丨程序员们,AI来了,机会来了,危机也来了,我们该咋办?
  2. Asp.net MVC 示例项目Suteki.Shop分析之---结束篇
  3. mac改终端前面的计算机名
  4. 结合源码深入理解Android Crash处理流程
  5. [css] 使用css将图片转换成黑白的效果
  6. 360断网急救箱_万事不求人,教你自己动手修复网络断网
  7. AlphaFold2开源了,不是土豪也不会编程的你怎么蹭一波?
  8. Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(二)
  9. SpiderKeeper的使用
  10. node 连接mysql 中间件_如何在node.js里连接和使用mysql
  11. 中南大学计算机基础考试试题,[中学]中南大学计算机基础考试题库试题.doc
  12. 计算机审计实验一计划阶段,审计实验1.ppt
  13. 安卓开发日记1——虫虫新闻
  14. 保镖机器人作文_【保镖的作文】_玛雅作文网
  15. DISC社交风格测试题--老虎 孔雀 考拉 猫头鹰
  16. 基于Fruits-360数据集构建CNN进行水果识别实验
  17. c#开发条形码生成器
  18. 为什么说JCLGMP必将带来更实实在在的就学等方面权益?
  19. 雨雨cms-YYCMS5.0新版影视网源码自动采集数据-玥雅CMS
  20. python怎么变成竖行,python更改文字为竖排

热门文章

  1. 【效应量:Cohen‘s d与η2】
  2. Python实战小程序——Excel操作
  3. sql多表联查中如何避免or关键字
  4. 中央子午线的计算方法(转)
  5. 项目经理:你来设计一下Redis 故障转移、高可用的方案
  6. 前端开发icon高清图标搜索、下载网站
  7. 商务礼仪培训,细节决定成败
  8. 用SUMIF对超15位的代码进行条件求和,出错了,原因是....
  9. 广州大学大学物理第十一章 真空中的静电场
  10. 股指期货的基差为负值说明什么(股指期货的基差为负值说明什么问题)