1、maven命令:
1、clean:清空项目中的target文件目录的.xxx.class文件信息
2、install:将项目打包处理
install详细说明:每次打包会在两个位置生成jar包文件。
位置1:target文件目录中
位置2:根据坐标,在本地仓库中生成具体的jar包文件,该文件可以被其他项目依赖
2、打包类型
1、jar包文件springboot项目、工具API项目、框架的项目
2、war包文件,动态的web项目,jsp类型,tomcat服务器
3、pom类型:表示聚合工程,微服务架构设计一般采取pom类型
3、@RestController = @Controller + @ResponseBody
@Controller:表示将当前项目提交给spring容器管理
@ResponseBody:前后端数据交互,将后端服务器返回的对象转化成json格式
前后端交互媒介HTTP协议,传输的数据都是字符串。
json:有特殊格式的字符串。
当使用properties文件实现业务数据处理时,要添加@PropertySource(value = "classpath:/name.properties",encoding = "UTF-8")
4、jar传递性的实现原理
1、当maven扫描依赖信息时,会根据坐标找到对应的jar包文件。
2、之后扫描当前pom文件
3、根据pom文件中的依赖项dependency再次查找其它的依赖jar包,知道所有jar包依赖完成为止。
5、spring容器管理对象用法
@component注解说明:表示将User对象交给spring容器管理。类似于:new User()
问题:如果直接new User(),其中的属性都为null。
需求:准备User对象先赋值,交给spring任飘渺后期管理。
测试时需要将@component删除。
@Bean注解说明:是spring专门为管理自定义对象研发的注解。
用法区域:在配置类中使用。
被@Bean修饰的方法,将方法名当作key---user,将返回值对象当作值--value,根据KV结构,存储到Map集合中交给spring容器管理。
@Configuration注解:该类是一个配置类。可以理解为该类是一块区域,在区域中编辑自定义对象。
@SpringBootTest注解:主要作用就是启动spring容器,完成测试案例。只要在该类中,执行@Test测试方法,就会启动spring容器。
6、ORM思想
对象关系映射:是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的虚拟对象数据库。
关系映射:1、对象映射----映射表。
2、对象中有属性----表中有字段。
总结:以对象的方式操作数据库。
7、Mybatis介绍
Mybatis是一款优秀的持久层框架,利用ORM思想实现了数据库持久化操作。也有人把Mybatis称之为半自动化ORM映射框架。
namespace是mybatis映射文件的唯一标识,与接口对应。
关联查询:一对一封装:固定写法
1、association:将结果集封装成单独对象 dept
2、property:需要封装的属性名称
3、Java type:固定写法,属性的类型。
例: <resultMap id="empRM" type="Emp">
<!--1.主键字段 -->
<id property="empId" column="emp_id"></id>
<!--2.映射其它属性字段-->
<result property="empName" column="emp_name"></result>
<association property="dept" javaType="Dept">
<!--3.完成dept对象的封装-->
<id property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
</association>
</resultMap>
一对多封装查询:collection:封装集合,将同一部门的员工封装到同一个集合中。
ofType:固定写法,属性的类型
例:<resultMap id="deptRM" type="Dept">
<!--指定主键-->
<id column="dept_id" property="deptId"/>
<!--封装其它的属性字段-->
<result column="dept_name" property="deptName"/>
<!--封装集合 属于同一个部门下的员工,封装到一个集合中 -->
<collection property="emps" ofType="Emp">
<id column="emp_id" property="empId"/>
<result column="emp_name" property="empName"/>
</collection>
</resultMap>
子查询:select 开始二次查询。
column 将字段的值作为参数传递给子查询,子查询通过#{字段名称}动态接收。
<resultMap id="cRM" type="Dept">
<id column="dept_id" property="deptId"/>
<result column="dept_name" property="deptName"/>
<!--数据集合封装-->
<collection property="emps" ofType="Emp" select="findEmp" column="dept_id"></collection>
</resultMap><select id="findEmp" resultMap="empRM">
select * from emp where dept_id = #{dept_id}
</select><resultMap id="empRM" type="Emp">
<id column="emp_id" property="empId"/>
<result column="emp_name" property="empName"/>
</resultMap>
驼峰映射规则:在mybatis文件中添加<setting name="mapUnderscoreToCamelCase" value="true"/>,开启驼峰映射。
resultType:
1、适用于单表查询,同时要求属性名称与字段相同。
2、如果属性与字段满足驼峰映射规则,开启驼峰映射后,可以使用resultType
resultMap:
1、如果字段不一致的时候使用。
2、多表关联查询时使用。
3、如果开启了驼峰映射规则,则自动映射的属性可以省略,最好标识主键。
4、如果使用驼峰规则映射时,需要映射封装对象,默认条件下,驼峰规则失效,可以使用
autoMapping="true"要求开启驼峰映射。
5、默认条件下一对一,一对多不会自动完成驼峰规则映射,需要配置autoMapping="true"才能自动映射。
8、session和cookies
9、路由导航守卫
原因:当用户没有登录的条件下,用户可以手动输入请求地址,可以直接跳转项目。这样的方式非常不安全。
解决方案:前端通过拦截器控制用户是否登录。
拦截器说明:用户拦截的是URL中跳转的路径。
结果:1、拦截 跳转到登录页面
2、放行 跳转用户目标页面。
/**
* 参数说明:
* 1.to 到哪里去
* 2.from 从哪里来
* 3.next 请求放行
* 拦截器策略:
* 1.如果用户访问/login登录页面 直接放行
* 2.如果访问其它页面,则校验是否有token
* 有token 放行
* 没有token 跳转到登录页面
*/
router.beforeEach((to,from,next) => {
if(to.path === '/login') return next()
//获取token数据信息
let token = window.sessionStorage.getItem('token')
if(token === null || token === ''){
return next("/login")
}
//放行请求
next()
})