版本控制: 记录文件的所有历史变化 错误恢复到某个历史的版本 多人协作开发编辑同一个文件 实现功能差异版本 lombok作用:(自动生成下列方法) 数据库:数据库 表 字段对应的值 user表 实体对象pojo:用来封装数据库中的数据user类 实体对象方法:Get/Set/toString/无参构造/含参构造/equals/hashcode
spring的核心:开箱即用 启动项:springboot为整合第三方框架写了启动项的jar包文件,其中官网已经将所有的配置信息/所需要的jar包文件天前测试并且自定义 maven依赖的传递性:maven中的jar包是有依赖传递性 依赖性实现的步骤: 当maven开始解析项目的pom.xml文件时,根据依赖的坐标,找到指定的jar包文件之后添加依赖 之后扫描当前文件中的xxx.pom.xml文件 扫描pom.xml文件中的依赖信息dependency 根据dependency的坐标,重复执行上述操作,直到所有的依赖都添加完成 SHA1:一种密码散列函数 网络数据传输一般都需要进行加密处理.maven中采用SHA1数字签名的加密算法,保证数据传递的有效性 关于hash说明: 问题1: 常见hashcode值 有多少位16进制数组成??? 8位 问题2: 8位16进制数,有多少种排列组合? 2^32种 00000000-FFFFFFFF 问题3: 相同数据进行hash(算法相同),问题: 值是否相同? 必定相同 问题4: 不同数据进行hash(算法相同),问题: 值是否相同? 可能相同 hash碰撞 问题5: 一个数据1kb, 一个数据ITB 问: hash计算的速度谁快? “一样快” hash本质 springboot的高级用法: 1.关于配置文件的说明: pro文件的说明:pro文件的语法:key=value 特别注意不要有空格 字符集编码:程序读取文件时默认采用的IOS-8859-1编码, 弊端:所有的key都必须写完整,不能缩进 yml文件的说明:yml文件语法:数据结构:key-value结构 写法:key: (空格)value 层级代码结构:注意缩进 字符集:文件读取,默认采用utf8编码,可以写中文 环境分割: 由于配置文件数量众多,如果每次修改则带来诸多不便,所以可以采用环境分割 实体对象的要求: 类名一般与表名关联 属性名称一般与字段名关联 pojo中的属性类型必须为引用类型(包装类型) 实体对象必须有get/set方法 一般实体对象要实现序列化接口,原因:数据可能跨平台(跨服务)传输,必须序列化 mybatis(持久层框架) ORM思想:对象关系映射,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 常规的JDBC弊端:无论如何执行都必须获取数据库的链接,连接池c3p0 druid hk链接池 操作sql语句的时候,步骤繁琐,不便于学习记忆 资源必须手动关闭 优点:操作数据库最快的方式就是JDBC,协议tcp mybatis是一个优秀的持久层框架,基于ORM设计思想,事项了以对象的方式操作数据库 mybatis的调用流程: mybatis的优化: 1、 关于mybatis核心配置文件的顺序 The content of element type “configuration” must match “(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?, reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)”. 2、mybatis简化-别名包 三种方式:别名映射,别名包,别名的注解定义 3、mybatis简化-sql标签 业务说明:sql片段则可能重复,如果简化sql语句则可以使用sql标签 用法: 说明:优点:使用sql标签可以省去xml文件的大小 代码的结构相对简单 缺点:sql只能抽取公共的sql语句,局限性较大 如果大量使用sql标签,则代码的可读性差 4、mybatis-动态sql if-where用法: 业务需求:根据user对象查询数据,要求根据对象中不为null的属性充当where条件实现动态的查询 set标签 说明,去除set条件中多余的,号 choose when otherwise标签 业务需求:根据条件实现数据的查询,如果存在name则按照name查询,否则按照sex查询 resultType与resultMap的用法 resultType说明: 当结果集中的字段名称没如果与属性名称一致时才会实现自动的数据封装 resultMap说明: 当结果集中的字段名称,与对象中的属性不一致时,可以使用resultMap实现自定义的封装 总结: 1、如果遇到多值传参,一般封装为map集合 2、mybatis-config.xml文件的配置顺序是有序的,不能随意改动 3、别名的写法:别名标签,别名包,注解 4、sql标签将公共的sql进行抽取 铜鼓osql变迁进行定义 5、动态sql标签:where-if/ set/ choose when 6、resultmap用法:将公共的sql进行抽取 通过sql标签进行定义 7、resultType:单表查询时/属性与字段一样时 8、关联关系的用法 一对一 一对多 mybatis的补充 1.参数取值特殊说明 形参/实参 参数传递的是值,和名称无关 resultMap的简化 当开启驼峰映射规则时,可以自动映射,则使用resultType 如果mybatis传递的参数只有一个,mybatis则是利用下标取值,如意名称任意#{xxxx},但是一般需要注意规范 2、代理对象 常见动态代理 jdk动态代理: 特点: 要求被代理者必须实现接口 jdk代理是jdk默认提供的 CGLIB动态代理 特点: 不管代理者是否有接口,都可以为其创建代理对象,代理对象是目标对象的子类 cglib需要手动导入jar包 spring为了创建代理对象方便,自身自动调价cglib的依赖项 三大框架的整合 框架概述:spring框架: spring为了团队开发将复杂的框架进行整合,使得程序从控制到调用浑然一体,以一种统一的方式进行调用 spring框架的核心机制 1、IOC 控制反转:将对象创建的权利交给spring容器管理,由spring容器管理对象的声明周期 DI 依赖注入:创建对象时,如果该对象中有需要依赖的属性,spring负者为属性赋值 2、AOP面向切面编程 springMVC 说明:该框架主要的作用,接收用户的请求,之后完成业务处理最终返回响应给用户 框架之间的调用关系:
编辑核心配置-application.xml 1.数据源配置: 链接写法: serverTime=GMT%2B8 定义时区 东八区 userUnicode=true&characterEncoding=utf8开启使用Unicode编码,并且指定编码集为utf-8 autoReconnect=true 断线是否重新链接 &allowMultiQueries=true是否允许批量操作 RestFul实现参数传递 REST指的是一组架构约束条件和原则,满足这些约束条件和原则的应用层序伙设计就是restFul RESTFUL特点包括: 1、每一个URI代表1种资源; 2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源; 3、通过操作资源的表现形式来操作资源; 4、资源的表现形式是XML或者HTML; 5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。 [1] springMVC参数传值: 前端控制器:主要负者用户请求的接收,以及后端业务的处理 Servlet 什么是servlet? Servlet是java Servlet的简称,称为小服务程序或者服务连接器,用java编写的服务器端程序,具有独立于平台和协议的 特性,主要功能在于交互式地浏览和生成数据,生成动态web内容 概括:Servlet是java后台程序与用户交互的机制(媒介)
|