其他
1.对于后台输出到前台的变量必须要加$!{var}
2.Math.random()这个方法的返回值是double类型,注意取值范围是0=< <1,注意除0异常,
要想获得整型数,不要*10,只需要调用Random的nextInt(),nextLong()方法,
3.不要在视图中加任何的逻辑,视图的任务就是展示,
4.任何数据结构的构造或初始化都要指定其大小,避免数据无限增长吃光内存
数据库规约
1.表达与否概念的字段必须用is_xxx,如删除与否is_deleted
2.数据库名,表名,字段名都不允许出现大写,因为MySQL在linux默认下区分大小写
3.decimal对于小数的存储用,禁止使用float和double,float和double存在精度损失的问题,很可能在值计算时得不到正确的结果
如果数据范围超出了decimal的范围的话,建议就把整数和小数分开存
4.如果存取的字符串长度确定了,那么就用char定字符串的长
5.varchar是可变字符串,那么当其字符串超出5000就用text,独立出一张表避免影响其它字段的索引效率
6.表的命名最好是业务名称_表的作用
7.字段允许适当冗余,但是对于冗余的字段有要求:1.不是频繁修改,2.不是varchar超长字段
8.合适的字符长度,可以提高检索速度。
SQL语句
1.禁止使用count(常量)或者count(列名),因为它们避免不了NULL值
用count(*)来计算条数
2.count(distinct col)计算该列没有NULL值的不重复的数量
3.注意count(col)当这一列全为NULL时,返回0,而sum(col)返回的值是NULL
4.当代码中写查询分页时,count为0应直接返回,避免执行后边的代码
5.对于数据的修改,删除操作时应该先select,避免出现错误
6.在表查询时,应该禁止*,能用字段就用字段
7.select * from user where id in
<foreach collection="ids" item="item" open="("separator="," close=")">#{item}</foreach>
sql.xml 配置参数使用:#{}, #param# 不要使用${} 此种方式容易出现 SQL 注入,
select * from userorder by #{name} desc /*有问题sql*/
select * from userorder by ${name} desc
8.iBATIS 自带的 queryForList(String statementName,int start,int size)不推 荐使用。
正例:Map<String, Object> map = new HashMap<String, Object>();
map.put("start", start); map.put("size", size);
9.不要写一个大而全的更新数据,更新哪些写哪些,因为容易出错,效率低
10.@Transactional 事务不要滥用,
11.Query对于查询对象的封装,超过两个以上的对象禁止用Map来传输