注解开发 + 时间间隔计算

文章目录

    • 注解
    • SSM注解开发(spring+springMVC+MyBatis)
    • SpringBoot中注解开发
        • 启动类
        • Service层
        • aop切面注解
        • 声明切入点的注解方法
        • 测试类
        • 自定义注解
        • 使用自定义注解
        • Date 转 JSON字符串 | JSON字符串转Date
        • 时间间隔查询
        • 间隔类型
        • SQL语句的使用

注解

@Override(jdk自带的)			//作用: 检查DAO中接口的方法是否在实现类中正确实现

@Param(MyBatis)				//作用: 当DAO接口的方法中有多个形参时,使用param注解,为属性起别名,可供映射使用

@Test(junit4) 				//作用: 测试

@WebServlet(servlet)		//作用: 设置访问路径

SSM注解开发(spring+springMVC+MyBatis)


//默认spring不扫描注解,需要设置开启


@Component				//作用: 标注一个类,交由spring工厂管理,由工厂创建对象

@Scope("prototype")		//作用: 设置多例

@Controller				//作用: 标注控制器类

@Service				//作用:标注SeviceImpl类 

@Repository				//作用: 标注DAOImpl类;
						//注: 使用MyBatis框架,没有实现类.暂时没有作用
						
						
@Autowired				//作用: 自动装配,在spring工厂中寻找被标注的实现类对象,将获取到的对象赋值给该标注的属性
						//写在属性上,底层会使用反射破坏private修饰,直接给属性赋值,不会使用set方法
						//写在set方法上,底层不会破坏private修饰,会调用set方法给属性赋值
						//注: 默认是按类型查找,和name属性无关

SpringBoot中注解开发

启动类

@SpringBootApplication
	作用: 标注启动类,扫描启动类包下或子包的注解
	
		@SpringBootApplication  相当于以下的三个注解
		@ComponentScan 
			作用: 组件扫描
			
		@EnableAutoConfiguration    
			作用: 开启自动配置
			
		@Configuration  
			作用: 把当前创建的类,交由工厂管理 
				  配置类 相当于xml文件,声明当前类为配置类,类中的环境可以认为是工厂环境
			
@MapperScan("com.spring.dao")
	位置: 启动类上方
	作用: 扫描该包下的DAO接口

Service层

@Service
	作用: 标注Service实现类,交由spring工厂创建实现类对象
	
@Transactional(readOnly = true)
	作用:如标记查询方法,表示该方法不参与事务控制
	注意: 标记在类的上方,表示整个类中的方法起作用
		 标记在方法上方,表示只对某个方法起作用,且优先级更高

aop切面注解

@Aspect
作用: 把当前类标识为一个切面类,供spring容器读取

@Before
 作用: 前置增强,相当于BeforeAdvice的功能,相似功能的还有

@After、@AfterReturning
 作用: 后置增强,相当于AfterReturningAdvice,方法正常退出时执行

@Aroun
 作用: 环绕增强,相当于MethodInterceptor

@AfterThrowing
 作用: 异常抛出增强,相当于ThrowsAdvice

@After
 作用: final增强,不管是抛出异常或者正常退出都会执行

@DeclareParents
 作用: 引介增强,相当于IntroductionInterceptor

声明切入点的注解方法


	@Pointcut
	 作用: 声明一个切入点  参数为切入点表达式()
	 
	execution		//切方法
	
	@annotation		//切注解

	@Pointcut("execution(* com.cmfz.service.*.*(..))")
    public void logPoint(){}

测试类

@RunWith(SpringRunner.class)
	位置: 测试类上方
	作用: 固定写法
	
@SpringBootTest( classes = Application.class)
	位置: 测试类上方
	作用: 指定启动类

自定义注解

元注解: 加在注解上的注解

@Target(ElementType.METHOD)
 作用: 定义注解作用的位置
 使用位置: 方法上、类上、参数上
 
@Retention(RetentionPolicy.RUNTIME)
 作用: 定义作用范围  一般都是(RUNTIME)运行时生效
 
public @interface LogAnnotation {
	// default 默认值
	String content() default "";
	String type() default "select";
}

使用自定义注解

// 加在参数上、类上、参数上
LongAnnotation annotation = method.getAnnotation(LogAnnotation.class);

Date 转 JSON字符串 | JSON字符串转Date

@DateTimeFormat(pattern = "yyyy-MM-dd")		//作用: 将字符串转换成Date
@JSONField(format = "yyyy-MM-dd")			//作用: 将日期格式转换成指定的JSON字符串
private Date uploadTime;


时间间隔查询

时间间隔计算  计算当前时间和用户创建时间的间隔

1.Mysql的查询中,使用到查询两日期之间相差多少天,多少周等的情况;

可以使用mysql的内置的函数,TimeStampDiff();

2.TimeStampDiff()的使用的语法是,TimeStampDiff(间隔类型,前一个日期,后一个日期);

其中,间隔类型有FRAC_SECOND   表示间隔是毫秒,SECOND   秒,MINUTE   分钟,HOUR   小时,DAY   天,WEEK   星期  MONTH   月,QUARTER   季度,YEAR   年;

3.计算两个日期之间相差的天数是SELECT TimeStampDiff(DAY,'2018-08-06','2019-08-06');

间隔类型

SECOND		秒
MINUTE		分钟
HOUR		小时
DAY			天
WEEK		星期
MONTH		月
QUARTER		季度
YEAR		年

SQL语句的使用

 -- 内层sql语句

select TimeStampDiff(WEEK,user_create_date,sysdate())

-- 外层sql语句
select count(*) from (select TimeStampDiff(WEEK,user_create_date,sysdate()) value from cmfz_user) t
where t.value = 0

你可能感兴趣的:(注解开发 + 时间间隔计算)