第一篇博客
咋回事呢…标题写hello居然不行…
现在学习Java也有4个月了,学的内容确实挺多,真正掌握了并且理解透彻的知识却并没有多少.
见过一些大佬的写出来的经验,很多人都提到的一点就是要总结.这个总结到底咋做了,应该就是从脑袋里面把今天学过的知识已自己的语言说出来并运用
吧,我也希望自己能够养成这种习惯.好了废话不多说,下面对今天做总结.
这个博客各种功能还挺强大的,就是不太会用.
-
数据库
USING:
之前一直都是都是写各种select*from A join B on A.x=B.x
…
看了sql的书才发现可以很轻松的写成select*from A join B using(x) join C using(y)
把多张表关联
可以left/right join可以保留那张需要全部记录的表还可以关联删除(老师居然不讲,这么方便,难道怕我们记不住吗,关联删除/更新挺实用的啊)
如下delete A,B using A join B on (A.x=B.y) where A.x=?
这样删除A表的里满足条件的记录时B表里的关联数据也会删除,当然只适用一对多,一对一
2.Spring Aop
Aspect 面向切面编程
这是一种保留原有业务不改变核心业务代码的基础上进行业务扩展的技术.
用法通过添加@Aspect 和@Compnent修饰的类(切面类型)来扩展
在方法上添加@Pointcut切入
切入方式有4中,现只掌握了种
在需要的扩展日志业务的方法上添加改注解 业务层方法
细粒度,方法级别
(回头写的) InvocationHandler 接口 明天要强化一下了
@Service
@Aspect
public class LogAspect {
@Autowired
private SysLogDao sysLogDao;
@Pointcut("annotation(com.sys.aspect.RequiresLog)")
public void doLog() {}
@Around("doLog()")//环绕通知 等同于@After+@BeforeReturning+@Before+@AfterThrowing
public Object around(ProceedingJoinPoint jp)throw Throwable {
//扩展业务
Object result=jp.proceed();//核心业务方法
//这里jp可以获取执行的方法
//我在写这里的时候只能尽量从脑袋里面回想 不一定都是正确的 ,请注意!!!
Class<?> cls=jp.getClass;
//获取到方法签名 获取方法对象
//cls.getDeclaredMethod(果然真的想不起来没掌握到, jp.getArgs);//我意识到白天的学习真的不够了
//jp.getPrincepal //这里是可以获取到一个对象 user方法名可能都写错了
//method.getDeclaredAnnotation
//拿到注解对象,可以获取注解对象的值 业务操作信息
//封装完毕后
//调用dao
//sysLogDao.insertObject(log);
}
}
越写越意识到自己根本没有掌握,手写根本无法把这些代码写完整