JavaWeb个人笔记

这篇博客详细介绍了JavaWeb开发中的核心技术,包括MySQL的函数和SELECT语句详解,深入剖析了多表查询的流程;探讨了Maven的相关网站和一般web项目的依赖;同时,讲解了MyBatis的结果集映射和常见问题;最后,对Spring进行了全面讲解,涵盖其Maven依赖、对象构建、配置、依赖注入、Bean作用域以及自动装配的多种方式。
摘要由CSDN通过智能技术生成

一、MySQL

(一)MySQL函数

1. MySQL 一般函数

 ABS         求绝对值
 SQRT        求二次方根
 MOD         求余数
 CEIL 和 CEILING  两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
 FLOOR       向下取整,返回值转化为一个BIGINT
 RAND        生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
 ROUND       对所传参数进行四舍五入
 SIGN        返回参数的符号
 POW 和 POWER 两个函数的功能相同,都是所传参数的次方的结果值
 SIN         求正弦值
 ASIN        求反正弦值,与函数 SIN 互为反函数
 COS         求余弦值
 ACOS        求反余弦值,与函数 COS 互为反函数
 TAN         求正切值
 ATAN        求反正切值,与函数 TAN 互为反函数
 COT         求余切值

2. MySQL 字符串函数

 函数名称              作 用
 LENGTH              计算字符串长度函数,返回字符串的字节长度
 CONCAT              合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
 INSERT              替换字符串函数
 LOWER               将字符串中的字母转换为小写
 UPPER               将字符串中的字母转换为大写
 LEFT                从左侧字截取符串,返回字符串左边的若干个字符
 RIGHT               从右侧字截取符串,返回字符串右边的若干个字符
 TRIM                删除字符串左右两侧的空格
 REPLACE             字符串替换函数,返回替换后的新字符串
 SUBSTRING           截取字符串,返回从指定位置开始的指定长度的字符换
 REVERSE             字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串
 INSTR(STR,SUBSTR)   在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX)

3. MySQL 日期和时间函数

 函数名称        作 用
 CURDATE 和 CURRENT_DATE  两个函数作用相同,返回当前系统的日期值
 CURTIME 和 CURRENT_TIME  两个函数作用相同,返回当前系统的时间值
 NOW 和  SYSDATE  两个函数作用相同,返回当前系统的日期和时间值
 UNIX_TIMESTAMP  获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
 FROM_UNIXTIME   将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
 MONTH       获取指定日期中的月份
 MONTHNAME   获取指定日期中的月份英文名称
 DAYNAME     获取指定曰期对应的星期几的英文名称
 DAYOFWEEK   获取指定日期对应的一周的索引位置值
 WEEK        获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
 DAYOFYEAR   获取指定曰期是一年中的第几天,返回值范围是1~366
 DAYOFMONTH  获取指定日期是一个月中是第几天,返回值范围是1~31
 YEAR        获取年份,返回值范围是 1970〜2069
 TIME_TO_SEC 将时间参数转换为秒数
 SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数
 DATE_ADD 和 ADDDATE  两个函数功能相同,都是向日期添加指定的时间间隔
 DATE_SUB 和 SUBDATE  两个函数功能相同,都是向日期减去指定的时间间隔
 ADDTIME     时间加法运算,在原始时间上添加指定的时间
 SUBTIME     时间减法运算,在原始时间上减去指定的时间
 DATEDIFF    获取两个日期之间间隔,返回参数 1 减去参数 2 的值
 DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值
 WEEKDAY     获取指定日期在一周内的对应的工作日索引

4. MySQL 聚合函数

 函数名称     作用
 MAX         查询指定列的最大值
 MIN         查询指定列的最小值
 COUNT       统计查询结果的行数
 SUM         求和,返回指定列的总和
 AVG         求平均值,返回指定列数据的平均值

5. MySQL 流程控制函数

 函数名称      作用
 IF          判断,流程控制
 IFNULL      判断是否为空
 CASE        搜索语句
 NOT IN      反向的in!!!!!!!!!!  和IN函数相反

6.其他函数

 暂无记录

(二)SELECT语句

1. SELECT语句结构

 select 
     字段列表
 from 
     表名列表 
 where 
     条件列表 
 group by 
     分组字段 
 having 
     分组之后的条件 
 order by 
     排序 
 limit 
     分页限定

2. SELECT语句执行顺序

 SELECT语句的处理过程
 1. FROM阶段
 2. WHERE阶段
 3. GROUP BY阶段
 4. HAVING阶段
 5. SELECT阶段
 6. ORDER BY阶段
 7. LIMIT阶段

img

(1)FROM阶段

FROM阶段标识出查询的来源表,并处理表运算符。在涉及到联接运算的查询中(各种JOIN),主要有以下几个步骤:

  • 求笛卡尔积。不论是什么类型的联接运算,首先都是执行交叉连接(CROSS JOIN),求笛卡儿积(Cartesian product),生成虚拟表VT1-J1。

  • ON筛选器。 这个阶段对上个步骤生成的VT1-J1进行筛选,根据ON子句中出现的谓词进行筛选,让谓词取值为true的行通过了考验,插入到VT1-J2。

  • 添加外部行。如果指定了OUTER JOIN,如LEFT OUTERJOIN、RIGHT OUTER JOIN),还需要将VT1-J2中没有找到匹配的行,作为外部行添加到VT1-J2中,生成VT1-J3。如果FROM子句包含两个以上表,则对上一个连接生成的结果表VT1-J3和下一个表重复依次执行3个步骤,直到处理完所有的表为止。

经过以上步骤,FROM阶段就完成了。

(2)WHERE阶段

WHERE阶段是根据<where_predicate>中条件对VT1中的行进行筛选,让条件成立的行才会插入到VT2中。此时数据还没有分组,所以不能在WHERE中出现对统计的过滤。

(3)GROUP BY阶段

GROUP阶段按照指定的列名列表,将VT2中的行进行分组,生成VT3。最后每个分组只有一行。在GROUP BY阶段,数据库认为两个NULL值是相等的,因此会将NULL值分到同一个分组中。

(4)HAVING阶段

该阶段根据HAVING子句中出现的谓词对VT3的分组进行筛选,并将符合条件的组插入到VT4中。COUNT(expr) 会返回expr不为NULL的行数,count(1)、count(*)会返回包括NULL值在内的所有数量。

(5)SELECT阶段

这个阶段是投影的过程,处理SELECT子句提到的元素,产生VT5。这个步骤一般按下列顺序进行:

  • 计算SELECT列表中的表达式,生成VT5-1。

  • 若有DISTINCT,则删除VT5-1中的重复行,生成VT5-2。

(6)ORDER BY阶段

根据ORDER BY子句中指定的列明列表,对VT5-2中的行,进行排序,生成VT6。如果不指定排序,数据并非总是按照主键顺序进行排序的。NULL被视为最小值。

(7)LIMIT阶段

取出指定行的记录,产生虚拟表VT7,并返回给查询用户。LIMIT n, m的效率是十分低的,一般可以通过在WHERE条件中指定范围来优化 *WHERE* id > ? limit 10。

3. 多表查询

(1)外连接

         select
             a.id,
             a.title,
             c.name,
             a.hits,
             u.username,
             a.created
         from
             t_article a
                 left join
             t_channel c
             on a.channel_id = c.id
                 left join
             t_user u
             on a.user_id=u.id

二、Maven

(一)Maven相关网站

主站:Maven – Welcome to Apache Maven

国外库站:Attention Required! |

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值