1.Bean层属性类型尽量与数据库一致,有多种情况可以使用Int,若只有2中情况,如性别,可以用Boolean.
2.在Dao层中,注意各种方法与数据库值的联系,可以使用conn.setAutoCommit(false)和conn.commit()来设置事务,保证逻辑上的正确性。在从数据库得到数据库时要得到所有属性,包括导航属性所有数据,坚决不能偷懒!
3.判断字符串是否为空的方法:if(str==null||str.trim().equals("").注意判断是否为空必须写在前面,否则会由于短路原则导致出现逻辑错误。
4.当使用数据库中的数据进行展示,而非修改时,Date可以使用sql包中的。若需要修改,则需要进行转换成unit包中的。
5.在使用正则表达式时,需用“^$”进行结尾。
6.匹配汉字的正则表达式为[\u4e00-\u9fa5]。
7.将字符串转换成Int的方法int n=Integer.parseInt(str).注意该方法若str内容不是数字则会出错,此时需用try,catch来避免错误,若无法转换抛出异常。
8.在使用lovo 张老师做的包时,下拉列表中传的集合可以使用泛型直接传对象进去,然后在其对于的Bean层重写toString方法来得到下拉列表所要的属性。
eg:private LovoComboBox<ClassBean> classCmb;
this.classCmb = new LovoComboBox<ClassBean>("班级", cs.getAllClasses(), 20, 200, this);
然后在Bean层写public String toString(){
return name;
}
9.在java中使用对象序列号与反序列化复制文件方法:
File f=new File(headPic.getFilePath());//创建一个原文件对象
String str=headPic.getFilePath();
char[]chars=str.toCharArray();
int l=0;
for (int i = chars.length-1; i >=0; i--) {
if (chars[i]==‘.‘) {
l=i;
}
}
str=str.substring(l+1);//得到文件的后缀名
int m;
path="head/"+new Date().getTime()+"."+str;//通过拼接得到目标文件的相对路径
try {
FileInputStream ins=new FileInputStream(f);
FileOutputStream out=new FileOutputStream(path);
while ((m=ins.read())!=-1) {
out.write(m);//读一个,写一个
}
out.close();
ins.close();
10.保证无论如何调用业务逻辑层的方法,始终保证数据正确
11.DeBug模式中的快捷键:
1):F3 转到定义
2):F8 让程序继续运行,知道运行到下一个断点。
3):F6:单步执行(步入)step over,让程序执行完当前断点所在的语句,停在下一条语句
4):F5:步入(step into) 让程序进入当前断点所在语句中调试的方法
12.让界面中的表的数据更“正常”,而非数据库中的1,0等的方法:
private void update(){
roomTab.updateLovoTable(rs.getRooms());//先跟新表格
for (int i = 0; i < roomTab.getRowCount(); i++) {//roomTab.getRowCount()得到表格中的行数
int n=Integer.parseInt(roomTab.getValueAt(i, 4).toString());//将表格的第i行,第4列的值转换成int,注意行和列均从0开始
if (n==1) {
roomTab.setValueAt("正常", i, 4);//对显示的值进行修改
}
else {
roomTab.setValueAt("损坏", i, 4);
}
int m=Integer.parseInt(roomTab.getValueAt(i, 7).toString());
if (m==1) {
roomTab.setValueAt("男生寝室", i, 7);
}
else {
roomTab.setValueAt("女生寝室", i, 7);
}
}
}