项目问题总结day1

  今天写项目的时候,遇到了如下几个问题。

1.java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger

  这个错误是测试邮件发送的时候出现的,原因如上,找不到类。但问题在于,我引进了javax.mail-api这个依赖,在编译的时候并没有提示出错,而是运行的时候出错。经过排除,发现原因如下:MailLogger是JavaMail的一部分,包含在Java EE环境里面,但是不包含在Java SE环境里面,出现这个错误很大的原因是在SE环境里面测试邮件的发送。javax.mail-api只适合编译,但是如果要运行代码,必须完全实现JavaMail。

(参考自blog:http://blog.csdn.net/u013361445/article/details/49663329)

因此后来我换了javax.mail这个依赖之后就好了。

2.关于Integer和String类的equals()以及==两者之间的区别

  首先得清楚,二者的equals()方法都是被重写过的。

1)关于Integer

  Integer为int的包装类,它在被new出来的时候已经不为null(除非 Integer a = null),假设有a为Integer型;那么a.equals(null)永远为false。(这个我还是不太清楚,也不知道自己这样写对不对。)

2)关于String

  String的equals()方法被重写,它的 == 用来比较的是引用是否一致,而equals()是用来比较值是否相等。假设有字符串a,a.equals(null)是错误的。a == null是正确的,判断a是否不指向任何对象。

  其次是空串"",比较是否为空串,是比较它的值,所以用a.equals("")。

3.获得下一个递增主键的值

  刚开始我用的是 SELECT LAST_INSERT_ID(),然后用获得的值加一来获得下一个递增主键的值。这个sql语句是用来获取上一个插入得到的id。这个时候我是先获取再插入。当我清空表的时候,它获取的数据就对不上了,假如我现在的id为5,然后我把表清空了,它还会获得5,但是我的表下一个插入的数据将会从1开始。

  后来发现了MAX(id)好像也能有一样的功能,但是仍然会有刚才的问题。那就是当表是空的时候,数据是不对的。而且MAX(id)会报错。后来我改变了一下我的方法,先插入再获取。于是 SELECT LAST_INSERT_ID() 和 MAX(id)都可以用了。



猜你喜欢

转载自blog.csdn.net/lianup/article/details/79604941