提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、接口文档
自己手写。
github上传接口文档:
https://jingyan.baidu.com/article/64d05a021b96aade55f73b2e.html
使用md文档
二、Mybatis中的where
在使用Mybatis的动态sql时,有时会遇到根据条件判断添加where后面的筛选条件
比如:
<delete id="del" parameterType="map">
DELETE FROM film_info
<where>
<if test="release_date != null">
<![CDATA[
and release_date > #{release_date}
]]>
</if>
</where>
</delete>
where标签会在至少有一个子元素的条件返回sql语句的情况下才会去插入 where
如何开头为 and 或者 or 也会将其清除。
用trim标签也可以实现
三、原型图
产品经理–>原型图—>ui设计---->出图---->前端
四、apipost生成接口文档
ApiPost是一个支持团队协作,并可直接生成文档的API调试、管理工具。它支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员不可多得的工具 。使用者不仅可以利用apiopst调试接口,还可以书写相关注释(接口文档),方便的生成可读性好、界面美观的在线接口文档。
类似于postman、但是是中文的
具体操作网址:https://blog.csdn.net/wkkkk_k/article/details/106492736
五、excel表格换行 加大
换行:alt+回车
加大单元格:点最上面的或者最昨天的 对列宽、行高进行设置
六、mysql bigint类型
bigint支持的数字的大小范围为:19位,存电话号码。有符号范围:-9223372036854775808 到 9223372036854775807
int支持的数字范围为:10位,有符号范围:-2147483648 到 2147483647 无符号范围:0-4294967295
存入一个大的数值并不报错,但实际存到表里面的数据就是19位数字支持的最大数字
七、java中date如何计算半年前
//计算半年后
Format f = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
System.out.println("当前时间:" + f.format(c.getTime()));
//这里是半年后,如果是半年前则是-6
//周、天则在前面设置
c.add(Calendar.MONTH, 6);
System.out.println("半年后:" + f.format(c.getTime()));
String format = f.format(c.getTime());
DateFormat format1 =new SimpleDateFormat("yyyy-MM-dd");
//转成date类型
try {
Date parse = format1.parse(format);
System.out.println(parse+"DATE!!!!!");
} catch (ParseException e) {
e.printStackTrace();
}
八、mybatis中的时间比较
<delete id="del" parameterType="map">
DELETE FROM film_info
<where>
<if test="release_date != null">
<![CDATA[
and release_date > #{release_date}
]]>
</if>
</where>
</delete>
其中CDATA的作用是里面包含的为纯文本文件,所以里面的 > < & " “” 等本需要转译的符号 就不需要进行转译了
但是你如果在里面写标签的话,也会不起作用的。
写法:
<![CDATA[文本内容]]>CDATA的文本内容中不能出现字符串"]]>"
CDATA不能嵌套。
"]]>"这部分不能包含空格或者换行
xml中需要的转译字符:
在XML中,需要转义的字符有:
(1)& &;
(2)< <;
(3)> >;
(4)" ";
(5)' &apos;
九、定时任务
1.在程序入口加上@EnableScheduling,开启调度任务。
1.5.在定时类上添加@component注解
2.写方法 启到相应的作用
3.在方法上加@Scheduled(cron = “0 0 0 * * *”)注解
4.括号中的内容为cron表达式
例如@Scheduled(cron=“0 35 10 14 1/6 ?”)
表达的意思为从当前月开始 每六个月的十四号 10:35:00 执行一次这个方法
http://cron.qqe2.com 在线生成cron表达式
十、Aop 环绕通知 around
在之前的写法中,因为要计算耗时,所以我写了两个方法
@Before
@After
来分别计算时间来获得耗时,但是因为在两个方法中,所以需要设置一个外面的变量做存储。
Long memeryTime;
对于实体类我也是这么做的 ,因为在两个方法中都需要分别对实体进行set操作。
LogDo logdo = new LogDo;
但在一种情况下出现了问题。
在一个按钮点击后对两个接口分别执行了操作,例如保存并执行。此时Aop日志记录下来的内容是十分不准确的,非常混乱,最后定位觉得是这个地方出现了问题,可以进行改善,使用环绕通知写在一个方法中。
环绕通知可以自己决定让方法什么时候执行
@Around("logPoinCut()")
public void around(ProceedingJoinPoint joinpoint){
MethodSignature signature=(MethodSignature) joinpoint.getSignature();
Method method = signature.getMethod();
Mylog annotation = method.getAnnotation(Mylog.class);
String value = annotation.value();
System.out.println(value);
long l = System.currentTimeMillis();
try {
//这里让方法执行 proceed为方法执行的结果
Object proceed = joinpoint.proceed();
long l1 = System.currentTimeMillis();
long l2 = l1 - l;
System.out.println(l2);
System.out.println(proceed.toString());
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}
本来是这么写的,但是部署到服务器上后又出现了问题。问题的原因是请求没有Response,都为空。经过了解发现了问题所在。
是环绕通知改变了返回值,切面方法需要有返回值,来代替被代理方法返回结果
@Around("point_update()")
public Object update(ProceedingJoinPoint jp) throws Throwable{
...
Object result = jp.proceed();
...
return result;
}
需要按照这样的方法写,问题解决。
十一、基本类型问题
getPage 在进行展示的时候 搜索的情况下有数据,默认的情况下就没有数据了。
发现我在参数类中对于这个参数的类型定义的是 int
在第一次进入 默认没有搜索条件的时候这个参数前端是没有传值的,但是因为他是int类型 默认值为0不是null,所以就变成了搜索值为0的
所以将int 改为inter