发表于: 2025-04-14 21:01:00
0 98
今天完成任务:把深度思考的小课堂熟悉熟悉,会使我的任务一掌握的更加深入。
前面两个小课堂都没有数据,下面看第三条:Mybatis有哪些常用标签?怎么使用标签来完成动态查询?
之前使用数据库的知识就是简单的把增删改查给过了后就往下走了。
现在看深度思考后有了一些更深入的理解
(2)知识剖析:
Mybatis的常用标签有哪些呢?
1、定义sql语句标签:insert(增)、select(查)、update(改)、delete(删);
2、sql标签:定义代码片段,实现代码复用,引用时需要用include标签;
3、resultMap标签:解决实体类中变量名和数据库表格字段名称不同的问题;
4、动态sql标签:进行sql语句拼接,详细标签见下文。
Mybatis动态查询时常用标签有哪些?
1、where、if标签
2、choose(when、otherwise)标签
3、set标签
4、trim标签
5、foreach标签
6、bind标签
收获: 我在使用mybaits时只使用过where,后面的各种标签都没有使用过。
继续下面学习:第四点:什么叫反射?反射的坏处是什么?有哪些反射的应用场景?
什么是反射?
JAVA反射机制是在运行状态中
对于任意一个类,都能够知道这个类的所有属性和方法
对于任意一个对象,都能够调用它的任意方法和属性
这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制
理解:在我的代码中,反射的使用只在Dao接口中,代码的根目录会有一个Dao.xml文件。
提供调用根目录中的Dao.xml来使用Dao文件中的方法。
反射的坏处之一便是内部暴露:当我们使用反射时,其实是在动态的获取信息,那么对于被获取信息的一方来说,其实是不安全的,内部的所有东西在反射面前都无处遁形,非常的不安全,相当于我们在别人面前没有秘密可言。
理解:初学Java仅仅是使用了反射,不明白还还会有坏处。
收获:现在知道了他还有坏处。
继续学习:什么是AOP,适用于哪些场景,AOP的实现方案有哪些?
(1)背景介绍:
AOP(Aspect Oriented Programming),面向切面编程,是OOP(Object Oriented Programming,面向对象编程)的补充和完善。
OOP是开发者定义纵向关系,但是并不允许开发者定义横向关系,所以有部分代码是横向的分布在所有对象层次中,例如日志功能等而与它对应的对象的核心功能毫无关系对于其他类型的代码,这种散布在各处的无关的代码被称为横切(cross cutting),在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
AOP技术恰恰相反,它利用一种称为"横切"的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为"Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。
(2)知识剖析:
Spring AOP的一些基本概念
(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知
(2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的调用
(3)Advice(通知):AOP在特定的切入点上执行的增强处理
(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式
(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强。Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类
有五种类型的通知:
Before(前置):在方法被调用之前调用通知;
After(后置):在方法调用之后调用通知;(不管该方法是否执行成功)
After-returning(返回结果通知):在方法返回结果后;
After-throwing(异常通知):在方法抛出异常后;
Around(环绕):在方法调用之前和之后都会调用通知;
(3)常见问题:
(1)SpringAOP使用方法
(2)使用XML方法和使用注解
遇到的问题:对aop的理解完全没有,发现我学习任务一的缺点了。
明天的任务:把aop的深度思考解决,接着下面深度思考继续学习。
评论