文章目录
- 注解
- 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