您的位置:首页 > 数据库 > Oracle

最近忙项目的一些小教训总结

2009-04-13 22:37 288 查看
1, Spring的core taglib中的if标签的test属性是用来判断逻辑值来决定所嵌套的内容是否显示。该值通常用
${}来构造逻辑表达式,{}里的内容是java/jsp语法的表达式,通常不会出错,不过我有些地方不小心在{}后加
空格了,这也是平时的分隔代码的习惯导致的,结果所有的逻辑表达式都无效。
2,用过java编程的人都知道StringBuffer可以用来构造动态字符串,并且可以得到较好的内存使用效率和构造
性能。该功能类可以连接各种数据封装类如Integer, Boolean, String, Float。有次用new StringBuffer
(Integer(12)).append(StringA).append(",")之类的语句来连接一个字符串,结果调试半天才知道
StringBuffer(Integer)时,整型参数被用来初始缓存长度,而不是添加到字符串中,应该用new
StringBuffer().append(Integer(12)).append(StringA).append(",")。
3,StringA.split(".")会返回无法取头元素的数组(我想其实不是数组),如果需要用点号分割成数组,必须
用StringA.split("\\.")。后来看split的参数说明才知道是regular expression。点号被用来表示任意字符,
呵呵。后来又出现一个关于split的小教训,就是分隔符在StringA为结尾时,数组会放弃最后一个空元素,出
乎我的意料。如"a.b.".split("\\."),返回数组长度会是2,最后的空元素被丢弃,奇怪!分隔符在字符串开
头时,该零长度字符串能被归到数组的头元素中。
4,如果某表的触发器会更新该表的某行,该触发器无法成功。
5,如果某表A的主键列为表B的外键,并有CASCADE ON DELETE/UPDATE,则表B不能有触发器改动表A的数据,否
则CASCADE会失败。
6,Spring框架的数据库事务的AutoProxy机制
(org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator)可以根据datasource的不同
创建多个,只要对应属性interceptorNames配置正确即可。
7,Spring的core taglib中的set标签没有name属性,只有var和value。
8,Spring的core taglib中的if标签,如果对List类型变量取值.size(),则当该变量为NULL时会无法顺利编译
JSP文件。
9,ORACLE的SQL语句中可以用row_number()函数来取排序号,不过不能用别名ALIAS(as关键字声明的列名)来
用于其over从句。因为ALIAS在查询生成结果后才生效用以导出表示列名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA ORACLE SQL 项目 教训