mybatis

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()
})
 

mybatis是单值传参 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值