-
apache-commons-collections升级
apache-commons项目群的地址在:link。最近开发时发现,原来的apache-commons-colllections依赖库不能用了,然后去官网查了下,发现近期apache-commons-collections进行了迁移。如下所示:
apache-commons项目迁移
-
MyBatis中,#和$符号的区别?SQL的参数读取要用#,表示占位符;给出如下SQL语句:
<select id="getByKpInPaging" resultMap="calllogNumberOutgoingBeanResultMap">
SELECT
DISTINCT a.number, a.outgoing_count, b.name, b.icon
FROM
a_detail a outer join b_detail b
WHERE
calllog.kp=#{kp} AND contact.kp=#{kp} AND contact.number=calllog.number
LIMIT #{start}, #{pageSize}
</select>
如果我在获取kp参数的时候使用#符号,则执行过程中,参数会以占位符的形式出现,并按照参数的类型赋值。当表中该参数有索引的时候,只有类型对才能用到索引。例如,这里的kp在表中有索引,那么只有用#{}传入参数才可用到索引。如果用$符号,则MyBatis会做明文替换,传递给MySQL的SQL语句也没有指定正确的数据类型,就用不到kp的索引。
- 在HashMap中,如何使用可变对象作为key?
参考:Java 用自定义类型作为HashMap的键 - 在JavaWeb开发中,你需要掌握的MySQL知识,可以参考:MySQL总结这篇文章。
- insertOrUpdate语句,通过Insert...values() on duplicate key update ....语句实现,这里有两点需要注意:
- 影响行数:insert 1、update 2、和当前row的值完全相同则为0;
- select LAST_INSERT_ID() 返回值:在insert ... on duplicate key update...语句中,insert返回刚刚插入的记录的ID;update 无意义。
- 通过正则表达式匹配正确的IP4地址,参考link正则表达式如下:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
-
在Spring MVC项目中,可能需要添加业务监控日志,我们这里用到Spring AOP功能。在Controller中添加AOP,可能会出现拦截方法不生效的情况,这种情况可以参考SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式);另外,也可以利用filter、mvc interceptor或者method intercetpor实现,对于需要统计方法的运行时间,使用method interceptor最合适,参考使用方法拦截器MethodInterceptor和AOP统一处理log。
-
开发过程中的代码质量规范,利用google check style规范,在intelij idea中也有对应的check-style插件可供使用。
-
在开发的过程中,有时会对某个项目的代码行数感兴趣,对于git管理的代码库,可以使用如下命令统计:
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
网友评论