Controller层:
页面使用el表达式:${key}显示到页面,
数据是List格式的,使用下图
从提交的方式上可以分为:
从提交的内容上分为:
1、第一种情况:
①、页面上的参数name值要和实体类的参数名一致,②把表单序列化通过ajax请求把表单提交,后台使用实体类接收数据。
备注:
提交的表单里含有List集合数据,前台应该如下所示:
实体类应该如图:页面上:varStatus="status" 代表当前索引
Oracle:客户端和命令窗口,都是由用户决定内容-> conn user_name/password;
MySQL:客户端和命令窗口,都是由数据库决定内容-> use datebase;
都可以创建多数据库多用户,个人倾向于Oracle一个数据库中多个用户的形式,MySQL多个数据库多个用户形式(最好每个数据库对应一个用户)
Oracle是大型数据库而MySQL是中小型数据库,Oracle市场占有率达40%,MySQL只有20%左右,同时MySQL是开源的而Oracle价格非常高。
Oracle支持大并发,大访问量,是OLTP(On-Line Transaction Processing联机事务处理系统)最好的工具。
安装所用的空间差别也是很大的,MySQL安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
1、自动增长的数据类型处理:
MySQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
2、单引号的处理:
MySQL里可以用双引号包起字符串,Oracle里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
3、翻页的SQL语句的处理
MySQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。
4、空字符的处理
MySQL的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。按MySQL的NOT NULL来定义Oracle表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
5、字符串的模糊比较
MySQL里用字段名like%'字符串%',Oracle里也可以用字段名like%'字符串%'但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,'字符串')>0会得到更精确的查找结果。
程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
6、主键
MySQL一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,MySQL将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
要求效果:选中值为1,不选中值为0
实现问题:选中后value为1,未选中不传递value
解决方法:
第一种:在后台修改controller层进行修改,如果该字段为空则赋值为0
第二种:设置数据库对应的该字段默认值为0
以上两种方法可以实现不留痕迹的隐藏。
第三种方法可以实现占位隐藏(会留下空白而不显示)
Hutool是一个Java工具包,也就是一个工具箱,一个utils集合,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以简单粗暴。Hutool最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
Hutool的设计思想是尽量减少重复的定义,让项目中的util这个package尽量少,总的来说有如下的几个思想:
spring 项目建议使用Gradle进行构建项目,相比maven来讲 Gradle更简洁,而且gradle更时候大型复杂项目的构建。gradle吸收了maven和ant的特点而来,不过目前maven仍然是Java界的主流,大家可以先了解了解。
它们分为四类:
-- 假设 1164691264437 是 Java 里的“日期时间”:即:自1970-01-01 00:00:00以来的毫秒数
/*
getTime
public long getTime()Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object.
Returns:
the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date.
*/
mysql> select from_unixtime(1164691264437/1000);
+-----------------------------------+
| from_unixtime(1164691264437/1000) |
+-----------------------------------+
| 2006-11-28 13:21:04 |
+-----------------------------------+
-- 假设 "2011-05-31 23:59:59" 是 Java 里的“日期时间”:即:自1970-01-01 00:00:00以来的毫秒数
mysql> select UNIX_TIMESTAMP('2011-05-31 23:59:59');
+-----------------------------------+
| from_unixtime(1306857599/1000) |
+-----------------------------------+ |
计算两个DATE,DATETIME或TIMESTAMP值之间的天数。
DATEDIFF
(
date_expression_1
,
date_expression_2
);
DATEDIFF
函数接受两个任何有效日期或日期时间值的参数。如果您传递DATETIME
或TIMESTAMP
值,则DATEDIFF
函数仅将日期部分用于计算,并忽略时间部分。
DATEDIFF
函数在许多情况下很有用,例如,您可以计算产品需要发送给客户的间隔时间。
JEP 323 实现了 Java 10 中引入的局部变量类型推断的扩展。类型推断是从其余源代码和键入规则中推导出的数据类型。这节省了开发者的工作时间,且不会使源代码过于复杂,而提高了可读性。
从 Java 10 开始,可以使用关键字 var 声明局部变量,如下所示:
从 Java 11 开始,Java 运行时环境(JRE)将仅存在于服务器版本中,而不再存在于桌面中。但是,对于具有模块系统和 jlink 工具的桌面应用程序,开发者现在可以轻松创建或调整运行时环境。