1 Star 0 Fork 5

Eumenides/gp11

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
知识点回顾.txt 9.91 KB
一键复制 编辑 原始数据 按行查看 历史
陈俊波 提交于 2022-06-09 11:36 . 知识点回顾
Maven
一个项目的管理工具,如何创建,依赖,编译,打包,运行的软件
依赖,插件
Git
一个版本控制工具,用于记录文件的每一次修改,可以方便记录查看更新的日志,恢复旧版本
创建远程仓库,创建本地仓库,关联远程仓库(可以直接clone远程仓库到本地就直接关联了)
增删改文件,更新,提交,推送,中间会有冲突,修复冲突,标记为解决
分支-->创建分支,提交推送到分支,合并分支
自己搞一个分支,然后本地切换到分支,然后提交到分支,合并到另外一个分支
你fork同学一个仓库,在你本地写代码,合并到同学那边
ssh免密码操作,ssh创建
Mybatis
一个数据库操作的框架,可以让我们简化开发的流程,它将sql的拼接,参数的传递,结果的封装都整合到内部,然我们只需要写sql语句就可以了
sql包括基本语句,参数,返回结果这三个部分
mybatis就是一个可以然我们快速传递参数和解析返回结果的东西
写一个接口,接口中的方法都对应了一个sql, 接口的参数对应了sql的参数, 接口的返回结果对应的sql的返回结果
在resources目录中首先创建一个和接口所在的包一样层级的目录,然后创建一个和接口名字一样的xml文件,把mybatis的一些约束复制进去
namespace要和接口权限定名称保持一致,然后就是写sql了,根据对应的操作写 insert,update,select,delete标签
标签的id要和接口的中对应操作的方法名字保持一致,返回值要和接口的返回值一致,参数要和接口的参数保持一致
参数中的获取:
1 如果是一个参数,并且是基本数据类型或者是字符串,在xml中可以通过#{任意名字}的方式获取, 如果要保证见其名,知其意,可以写对应的名字
2 如果参数是一个参数,是一个对象类型的, 那么在xml中可以通过#{属性名}的方式来获取到对应的值
3 如果参数是一个参数,是一个map,在xml中可以通过#{key}的方式获取
4 如果是多个参数,则可以通过#{arg0....argn}或者#{param1......paramn}的方式获取,也可以在方法发参数前面通过@param("名字")的方式来指定名字
这样在xml中通过#{对应的名字}来获取参数
5 如果是一个参数,然后通过了@parma("名字") 来设置了参数名,则在xml中通过#{名字.xxx}来获取值,如果是基本类型或者字符串就是只有#{名字},对象和map需要在名字后跟上属性名或者key
返回结果:
1. 表中的列的名字和类型与我们的java类中的属性保持一致,会自动封装
2. 表中的列名是_,对象中是驼峰的,可以在mybatis的设置中开启驼峰的自动映射,驼峰的作用只是从表中到对象的映射,但是不能从对象到表中,也就是说参数是不能驼峰的
3. 如果既不是一样的属性名,也不是驼峰,则可以通过在sql中编写别名的方式将别名和属性名保持一致或者驼峰
4. 自定义resultmap,指定我们返回结果的xxx列名和对象的xxx属性保持一致
5. 关联查询, 对一和对多,不管是一对一还是多对一还是一对多还是多对多,最终属于对一或者是对多
5. 在关联关系中,我们返回的都是某一个类型的数据,比如我们查询部门以及对应的员工,我们返回的是部门,所以在关联关系中,我们通过自定义resultmap
来进行返回结果的确定,resultmap对应了一个类型的对象,也就是我们期望最终返回的类型,剩下的就是什么列映射到什么类型中,比如部门和员工,返回的列中
什么列是部门的,什么列是员工的,如果出现同名的列,需要给一个起别名,在映射的时候使用别名,对一就是在resultmap中通association来指定对一的映射关系
对多是通过collection来指定的,注意类型是oftype泛型,如果有多层嵌套,就在对应的对应内部嵌套,比如我们查询用户的订单以及对应的商品,最终返回的是用户
用户和订单是对多,订单和商品是对多,所以最终resultmap返回的是用户,在里面有一个对多指向订单,在订单的映射中还有一个对多指向商品
动态sql:
其实就是动态拼接我们的参数, if test="参数名 对应的判断条件" 符合条件就添加内部的sql部分
where是我们的条件有多个,并且是变化的,会导致我们的不确定什么时候添加and或者or, where是自动帮我们去除挨着where后面的紧跟着的and或者or
set 是我们更新的时候的列也不确定,所以会多一个, set就是帮我们去除最后一个更新的列后面的,
foreach 是循环遍历参数,比如在 in等里面的时候可以使用
selectkey 主键的获取,在主键自增的情况下,我们可以获取到当前事务最后一次的主键值,非自增可以让它生成主键帮我们添加到对象中,然后在sql直接使用
mapper扫描
mapper扫描的时候要注意,必须写到具体的包,不然在扫描范围中出现了其它的接口的时候,会把这个接口当做mapper的代理对象创建,在自动注入的情况下会出现问题
Spring
对象的管理: 对象的创建,依赖的注入,方法的执行,对象的销毁
对象的创建:
ioc,控制反转,将对象的创建方式从我们的手动创建变成交给spring创建,让它帮我们管理,实现了控制权的反转
使用方式其实就是告诉spring你帮我们创建哪个对象,如果是xml就是通过在xml中bean内部指定class,要想获取可以指定一个id,通过类型或者id获取
也可以在对应的类上面添加注解来创建,注解需要扫描
我们还可以指定init-method或者destroy-method在对象创建后或者销毁前执行
依赖的注入:
比如说我们的service需要用到dao来进行操作,那我们的service就依赖了dao,现在这些对象都是spring创建的,那么spring就可以根据我们的需要帮我们把对象设置到对应的类中
依赖的注入是在init-method之前执行的
AOP:
我们在执行方法的时候可能需要扩展功能,但是这些功能都是一些辅助功能,第一很多方法中会用到,第二个它的执行与否不影响我们核心代码的执行
这样的代码我们就可以封装起来, 在需要的时候执行一下,但是代码我又不想写到对应的放,比如我们的事务,事务是数据库操作,本来需要在dao层,
但是每个dao的方法都开启事务的话,我们的service一次调用多个dao操作就会出现多个事务,而我们希望它在一个事务中,
那么这个时候事务就不能在dao开,需要在service开,但是代码又不能写到service,因为职责乱了,所以我们把事务放到别的地方
在运行期间动态执行,这种机制就是aop,它是利用动态代理实现的
spring整合myabtis:
就是把我们手动创建的对象交给spring管理,是通过一个单独的依赖实现的,实际上是mybatis利用spring 的规范,自己创建了对象,然后给了spring
主要就是数据库的连接工厂和mapper对象,mapper扫描的时候必须指定具体的mapper包
SpringMVC
用于接收请求和返回结果的,实际上是减少了servlet的编写,使用方式就是通过一个servlet拦截我们需要的所有的地址,然后在内部再进行分发
最关键的就是地址对应哪个方法,参数对应哪个参数,返回结果怎么返回
地址是通过requestmapping来指定的地址到方法
参数的映射:
如果你接收对应请求的方法的参数名和类型保持和请求中参数的名字一致,会自动封装到对应的参数上面
如果接收参数的是一个对象,只要请求的参数名和对象的属性民保持一致即可
路径话的参数,在requestmapping中{mingzi}的方式来说明这个路径中当前位置的地址是一个参数, 在方法的参数上面只需要在对应的参数民
签名添加@Partvariable("mingzi") 就可以了,如果参数名和路径里面的占位符名字一致,注解里面的参数可以默认不写
请求的正文,如果传递的是正文参数,可以在对应的参数签名通过requestbody注解来声明,这个注解的作用是将请求正文中的数据解析为对应类型的对象
所以需要指定解析的方式,springmvc在导入了jackson的情况下默认是要求传递json格式的数据
结果的处理:
转发: 默认情况下方法的返回值是字符串,就是转发到对应的地址,也可以通过forward:显式声明
重定向: 方法的返回值是字符串,通过redirect: 来声明重定向到当前地址
返回数据: 可以通过response获取到流来手动返回数据
通过responsebody注解来声明当前方法的返回值作为响应正文返回,通过对应的解析器解析,默认情况下如果我们导入了jackson会转成json
静态资源处理:
指定默认的处理器
拦截器:
其实就是利用AOP实现的,和servlet规范中的filter很像,只不过拦截器是springmvc内部的东西,在servlet之后执行,filter是servlet规范中的东西,在servlet之前执行
拦截器分为三个操作,一个是前置,还有一个后置,还有一个是在渲染完成之后执行
上传下载:
导入commons io和fileupload依赖包, 配置一个id为multipartResolver的CommonsMultipartResolver对象即可,controller的方法中添加一个名字和form表单
中文件名一样的MultipartFile类型的参数
ssm整合:
没有整合,就是各自把各自的东西放一起
Quartz
定时任务,就是在一些特定的时间执行一些特定的操作,其实主要就是一个cron表达式,任务实现自job接口,最终通过调度器将两个对象整合到一起就可以了
springSecurity
一个任何和授权的框架,主要功能就是判断当前登录的用户有没有资格访问正在访问的地址
第一个当前登录的用户是谁,第二个正在访问的地址需要什么资格, 第三,当前登录的用户有什么资格
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Poqo/gp11.git
git@gitee.com:Poqo/gp11.git
Poqo
gp11
gp11
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385