cgb2106-day17 妖狐艹你老母 2021-09-11 03:26 203阅读 0赞 ### 文章目录 ### * * 一,AOP * * \--1,概述 * \--2,步骤 * * 1,添加jar包 * 2,使用 * 3,测试 * 二,Ajax * * \--1,概述 * \--2,步骤 * * 导入vue.js和axios.js * 编写HTML代码 * 修改服务器的Controller代码 * 测试 * 三,Mybatis * * \--1,概述 * \--2,核心资源 * * 1,核心配置文件 * 2,映射文件 * 3,核心工具类 * 4,ORM * \--3,入门案例 * * 准备库,表,数据 * 修改pom.xml,添加mybatis的jar包 * 创建核心配置文件mybatis-config.xml * 创建映射文件UserMapper.xml,写SQL * 封装pojo类 * 标题 * 标题 ## 一,AOP ## ### –1,概述 ### 是一个面向切面编程的思想,补充了OOP的不足. 实现的效果: 对方法的增强,本质上就是在执行方法的前后添加功能. 经典的使用场景: 统计性能分析 / 权限管理 / 事务管理 / 日志 / 缓存… 好处: 让程序员更专注业务代码本身 切面: 本质上就是一个类 通知: 本质上就是一个方法,定义一些功能 分为:前置通知,后置通知和环绕通知,返回后通知,异常通知 前置通知 : 是方法执行前要执行的功能 后置通知 : 是方法执行后要执行的功能 环绕通知 : 是方法执行 前 后都要执行的功能 切点: 指定哪些类里的哪些方法要用 通知的功能 常用AOP注解: @Aspect : 表示是一个切面类 @Before : 表示是一个前置通知 @After : 表示是一个后置通知 @Around : 表示是一个环绕通知 @PointCut : 表示切点 ### –2,步骤 ### #### 1,添加jar包 #### <!--添加aop依赖包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> #### 2,使用 #### package cn.tedu.service; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Service; @Service //ioc @Aspect//标记着这是一个aop的类:切面(由切点和组成) public class AopAspect { //1,切点(指定具体要用通知的类和方法) //切点表达式:*是通配符 ..表示0~n个 //方法返回值/包路径/子包/类名/方法名/参数列表 @Pointcut("execution( * cn.tedu.service..*.*(..))") public void point(){ } //2,通知(是一个方法自定义功能) @Around("point()")//是一个环绕通知 public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { long time = System.currentTimeMillis();//计时开始 //去执行你的业务方法--joinPoint连接点 Object o = joinPoint.proceed(); time = System.currentTimeMillis()-time;//计时结束 String methodname = joinPoint.getTarget().getClass().getName()//获取类名 +"."+joinPoint.getSignature().getName();//获取方法名 System.out.println(methodname+"方法执行时间是: "+time); return o ; } } #### 3,测试 #### 启动服务器 , 访问指定包 里的资源时 , 就会自动触发切面中通知的功能. ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70] ## 二,Ajax ## ### –1,概述 ### 全称 异步的js and xml , 好处: 异步访问 , 局部刷新 ### –2,步骤 ### #### 导入vue.js和axios.js #### ![在这里插入图片描述][1f81125c304241bea461b1b232ecd2f7.png] #### 编写HTML代码 #### 语法:axios.get(url).then( a=>( a表示服务器返回的结果 ) ) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试 vue提供的ajax技术</title> <!-- 1. 导入vue.js和axios.js --> <script src="vue.js"></script> <script src="axios.min.js"></script> <!-- 发起ajax请求,异步访问,局部刷新--> </head> <body> <!-- 2. 准备数据渲染区,利用插值表达式获取值 --> <div id="app"> 123{ {info}} </div> <!-- 3. 创建Vue对象 --> <script> new Vue({ el : "#app", // 挂载点 data : { //数据区 info : ' ' }, mounted : function(){ //发起ajax请求 //ajax 访问 服务器的数据 axios.get('http://localhost:8080/car/get').then( //箭头语法,其中a表示服务器返回的数据 a => ( //修改info的值,a.data是固定写法用来获取a的值 this.info = a.data ) ) } }) </script> </body> </html> #### 修改服务器的Controller代码 #### 添加一个注解,@CrossOrigin //放行JS的请求–跨域的解决方案 ![在这里插入图片描述][ce647633bb8e406f8729ea5fce941372.png] #### 测试 #### 访问网页,网页会直接发起ajax请求,请求服务器的数据.服务器把数据返回交给ajax继续解析,最终实现局部刷新网页. ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 1] ## 三,Mybatis ## ### –1,概述 ### 底层封装了JDBC , 对数据库可以进行操作 , 是一个优秀的持久层框架 好处: 简化了JDBC的开发步骤, 自动完成ORM映射 ### –2,核心资源 ### #### 1,核心配置文件 #### mybatis-config.xml 配置了事务管理,数据源 #### 2,映射文件 #### XxxMapper.xml 存放大量的CRUD的SQL语句 #### 3,核心工具类 #### 会话工厂SqlSessionFactory : 产生会话 会话SqlSession : 执行SQL语句 #### 4,ORM #### 是指对象关系映射. 把表里的字段的值 查到 自动交给 类里的属性 保存 ### –3,入门案例 ### #### 准备库,表,数据 #### #### 修改pom.xml,添加mybatis的jar包 #### <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>cgb2106boot03</artifactId> <groupId>cn.tedu</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>day17</artifactId> <dependencies> <!--mybatis依赖包--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!--jdbc依赖包--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.48</version> </dependency> </dependencies> </project> #### 创建核心配置文件mybatis-config.xml #### <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!-- mybatis的核心配置文件,配置了事务管理,数据源 --> <configuration> <!--environments可以配置多个数据库的连接信息,default指定默认的环境--> <environments default="test"> <environment id="test"> <!--使用的事务管理器--> <transactionManager type="JDBC"></transactionManager> <!--配置了数据源--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=utf8&serverTimezone=Asia/Shanghai" /> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> </configuration> #### 创建映射文件UserMapper.xml,写SQL #### <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--这个文件是映射文件,写SQL的 namespace用来作为一个mapper.xml文件的唯一标识 --> <mapper namespace="userMapper"> <!-- 查id=1的用户信息 id是这条SQL的唯一标识 resultType的值用来封装查到的结果,ORM --> <select id="getById" resultType="cn.tedu.pojo.User"> select * from user where id=1 </select> </mapper> #### 封装pojo类 #### package cn.tedu.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; //注意:::属性的名 和 表里的字段名 必须一致,否则无法ORM @Data @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) public class User { private Integer id; private String name; private String addr; private Integer age; } ## 标题 ## ## 标题 ## [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70]: /images/20210911/4bf1bc2e770344faa43a539747cae9c3.png [1f81125c304241bea461b1b232ecd2f7.png]: /images/20210911/22afb4e465a0451c8e83cdaf850e7bc5.png [ce647633bb8e406f8729ea5fce941372.png]: /images/20210911/f71e7ed3e48c4665aa266406bf74f1d1.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70 1]: /images/20210911/6181b493464943eab410ea0a52454f1b.png
相关 cgb2106-day18 文章目录 一,Mybatis入门案例 \--0,导入mybatis的jar包 \--1,核心配置文件 港控/mmm°/ 2021年09月11日 03:28/ 0 赞/ 222 阅读
相关 cgb2106-day12 文章目录 一,ElementUI的表单 \--1,测试 \--2,效果 二,Maven 「爱情、让人受尽委屈。」/ 2021年09月11日 03:24/ 0 赞/ 301 阅读
相关 cgb2106-day10 文章目录 一,Vue的基础语法 \--1,运算符 \--2,定义函数 \--3,Vue解析各种 快来打我*/ 2021年09月11日 03:24/ 0 赞/ 238 阅读
相关 cgb2106-day11 文章目录 一,Vue脚手架 \--1,执行以下命令安装并检验 \--2,创建Vue项目的过程 二,自定 朱雀/ 2021年09月11日 03:24/ 0 赞/ 303 阅读
相关 cgb2106-day08 文章目录 一,模拟服务器解析数据 二,实现CSS代码和HTML代码的分离 \--1,新建css文件 \ 古城微笑少年丶/ 2021年09月11日 03:22/ 0 赞/ 305 阅读
相关 cgb2106-day01 文章目录 一,数据库 \--1,概述 \--2,Mysql数据库的安装 \--3,Mysql数 系统管理员/ 2021年09月11日 03:14/ 0 赞/ 253 阅读
还没有评论,来说两句吧...