Java Web技术经验总结(七)

  1. apache-commons-collections升级 apache-commons项目群的地址在:link。最近开发时发现,原来的apache-commons-colllections依赖库不能用了,然后去官网查了下,发现近期apache-commons-collections进行了迁移。如下所示:

apache-commons项目迁移

  1. 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的索引。

  1. 在HashMap中,如何使用可变对象作为key? 参考:Java 用自定义类型作为HashMap的键
  2. 在JavaWeb开发中,你需要掌握的MySQL知识,可以参考:MySQL总结这篇文章。
  3. 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 无意义。
  1. 通过正则表达式匹配正确的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]?)$
  1. 在Spring MVC项目中,可能需要添加业务监控日志,我们这里用到Spring AOP功能。在Controller中添加AOP,可能会出现拦截方法不生效的情况,这种情况可以参考SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式);另外,也可以利用filter、mvc interceptor或者method intercetpor实现,对于需要统计方法的运行时间,使用method interceptor最合适,参考使用方法拦截器MethodInterceptor和AOP统一处理log
  2. 开发过程中的代码质量规范,利用google check style规范,在intelij idea中也有对应的check-style插件可供使用。
  3. 在开发的过程中,有时会对某个项目的代码行数感兴趣,对于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 }'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

第二十七天 数据库基础&JDBC使用&工具类Properties&连接池&DBUtils【悟空教程】

第二十七天 数据库基础&JDBC使用&工具类Properties&连接池&DBUtils【悟空教程】

15720
来自专栏Java3y

JDBC【事务、元数据、改造JDBC工具类】

1.事务 一个SESSION所进行的所有更新操作要么一起成功,要么一起失败 举个例子:A向B转账,转账这个流程中如果出现问题,事务可以让数据恢复成原来一样【A账...

36480
来自专栏源哥的专栏

由于查询语句中日期的格式引起的问题

我这边有一个系统,在一个环境下运行完全正常,但迁到另外一个环境后,其中一个查询功能就莫名其妙的出现了问题,我通过检查,发现有一个很复杂的查询语句,在一个数据库环...

7410
来自专栏Java学习之路

Hibernate学习---检索优化

Hibernate框架对检索进行了优化,前面我们将CURD的时候提到了load和get的区别,当时仅仅说了load为延迟加载,get为立即加载,当检索的记录为空...

36570
来自专栏Ryan Miao

mysql小数格式化正确方法

  用到小数格式化,mysql了解很肤浅,只会简单的sql语句,于是百度,发现大家都是转载同一个文章,好无语。 而且,结果验证还是不正确,查了官方api,终于写...

30590
来自专栏Netkiller

MySQL 转换 latin1 到 UTF-8

节选自 《Netkiller MySQL 手札》 MySQL 数据库将latin1 转换为 UTF-8有几种方案。 导出,iconv转换,再倒入 MySQL ...

36060
来自专栏IT笔记

聊聊Java中的四种单例模式

近期在做支付,一开始图省事,也是为了调试方便,支付的alipayClient和tradeService都是使用的时候去拿,这样就会导致创建多次。为了节省资源,统...

27070
来自专栏前端侠2.0

oracle中,通过触发器,记录每个语句影响总行数

       业务系统中,有一步“抽数”流程,就是把一些数据从其它服务器同步到本库的目标表。这个过程有可能 多人同时抽数,互相影响。有测试人员反应,原来抽过的数...

10620
来自专栏xingoo, 一个梦想做发明家的程序员

程序猿的日常——Mybatis现学现卖

最近有一个小项目需求,需要用spring mvc + mybatis实现一个复杂的配置系统。其中遇到了很多不太常见的问题,在这里特意记录下: 主要涉及的内容有...

36570
来自专栏hotqin888的专栏

golang beego orm无限条件查询,多条件查询,不定条件查询,动态多条件查询sql语句,一个字段匹配多值

其实我的需求就是:一个树状目录,每个目录下都存有成果,给定某一个上级目录id,分页查询出这个目录下以及子孙目录下的所有成果,要求分页。

1.1K20

扫码关注云+社区

领取腾讯云代金券