当参数未使用@Param注解时,可以通过以下方式访问:
#{参数位置[0..n-1]}
或者

阅读全文......

很多时候我们需要对页面上的表格进行添加一行,删除一行这样的基本操作。如果我们使用原生的javascrip来写会很不方便。为了解决这个问题我们封装了一些常规的页面表格处理方式,集成到jQuery中,方面我们后续使用。 如此,jQuery eTable Plugin 便应运而生了。该套函数库提供对表格操作的一些基本方法。其实质是通过$(table).eTable()获取封装了表格元素的ETable对象,同时.eTable对象封装了一些列针对表格行列进行操作的方法。使用这些方法可以对表格进行行列的插入与删除。 可以通过如下方式获取页面表格对象:
var $eTable = $("#table1").eTable();
var $eTable = $(document.getElementById('table1')).eTable();

阅读全文......

移动目标元素对象,使其显示在遮罩层正中央。 jmask 接受一个参数.
options: 该参数为对象类型。用来设置遮罩层默认全局属性,默认属性为:
$.fn.jmask.defaults = {
	bgcolor : '#eee',
	opacity : 0.8
};
Example:
$("#jmaskDemo").jmask();
$("#jmaskDemo").jmask({
    bgcolor:'pink',
    opacity : 0.6
});

junmask() 关闭遮罩层

阅读全文......

abs(n) : 返回n的绝对值 ceil(n) : 返回大于等于数字n的最小整数 floor(n) : 返回小于等于数字n的最大整数

阅读全文......

内连接用于返回满足连接条件的所有记录;默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接。
SQL> select a.dname,b.ename from department a, employee b where a.deptNo = b.deptNo;
或者
SQL> select a.dame,b.ename from department a inner join employee b ON a.deptNo = b.deptNo;
NOTES:

阅读全文......

grouping : 用于确定统计结果是否用到了特定列。如果返回0,则表示统计结果使用了该列;如果返回1,则表示统计结果未使用该列
 SQL> SELECT name,address ,SUM(money),GROUPING(name),GROUPING(address) FROM customer GROUP BY CUBE(name,address);
 NAME                         ADDRESS  COUNT(*) SUM(MONEY) GROUPING(name)  GROUPING(address)
 ---------------------------- ------- ---------- --------- --------------  -----------------
                                         4		162.26		1				1
                             a		 	1		32			1				0
                             abcdefg		2		118.03		1				0
                             152号大街	1		12.23		1				0
 oxcow									2		118.03		0				1
 oxcow						abcdefg		2		118.03		0				0
 leeyee									2		44.23		0				1
 leeyee						a			1		32			0				0
 leeyee						152号大街	1		12.23		0				0
  • dense_rank(expr1,expr2,..) within group (order by expr1,expr2,..) : 该函数用于返回特定数据在一组行数据中的等级。关于rank,dense_rank的具体说明请查看
     SQL> select dense_rank(5000) within group (order by sal) rank from emp;
             RANK
             -----
             12
    
  • first : Oracle9i新增函数,获取首个排序等级,然后使用分组汇总函数汇总。该函数不能单独使用,必须与其他分组函数结合使用
     -- 年龄最大的一组人中工资最高的
     SQL> select max(money) keep (dense_rank first order by age desc) from customer;
    
  • 阅读全文......

  • 提交事务
     commit
    
    当执行commit后,会确认事务变化、结束事务、删除保存点、释放锁。以下情况会自动提交事务:
    • 执行DDL语句时;比如create table,alter table,drop table
    • 执行DCL语句时;比如grant,revoke等。
    • 退出SQL*Plus时。
  • 保存点
     savepoint <point_name>
     exec dbms_transaction.savepoint('<point_name>');
    

    阅读全文......

  • 数据查询语句(select 语句):用于检索数据库数据
  • 数据操纵语言(Data Manipulation Language,DML):用于改变数据库数据,包括insertupdatedelete三条语句
  • 事物控制语句(Transaction Contorl Language,TCL):用户维护数据库的一致性,包括commitrollbacksavepoint三条语句。

    阅读全文......

  • 在遍历数组时应将数组的长度保存在一个变量中,不要在循环中每次都访问数组长度。
    // bad code  
    for ( var i = 0; i < aArray.length; i++) {  
        // TODO something  
    }  
    
    // better code  
    var iLen = aArray.length;  
    for ( var i = 0; i < iLen; i++) {  
        // TODO something  
    }  
    

    2.如果需要给DOM中添加新的元素,避免创建一个元素添加一次。应尽量只添加一次

    // bad code  
    $.each(aArray, function(i, item) {  
        var newListItem = '<li>' + item + '</li>';  
        $('ul').append(newListItem); // 这里每append一次都将会重载DOM  
    });  
    
    // better code  
    var frag = document.createDocumentFragment(); // 创建文档碎片  
    $.each(aArray, function(i, item) {  
        var newListItem = '<li>' + item + '</li>';  
        frag.appendChild(newListItem); // 这里不会刷新DOM  
    });  
    $('ul').appendChild(frag); // 添加新元素,此时重载DOM一次  
    
    // or do this  
    var sHtml = '';  
    $.each(aArray, function(i, item) {  
        html += '<li>' + item + '</li>'; // 构造需要添加元素的字符串  
    });  
    $('ul').html(sHtml); // 使用jQuery的$.fn.html()方法添加改字符串  
    

    3.避免重复,保持代码干燥

    // bad code  
    if ($eventfade.data('currently') != 'showing') {  
        $eventfade.stop();  
    }  
    if ($eventhover.data('currently') != 'showing') {  
        $eventhover.stop();  
    }  
    if ($spans.data('currently') != 'showing') {  
        $spans.stop();  
    }  
    
    // good  
    var $elems = [ $eventfade, $eventhover, $spans ]; // 构造一个数组  
    $.each($elems, function(i, elem) {  
        if (elem.data('currently') != 'showing') {  
            elem.stop();  
        }  
    });  
    

    4.当心匿名函数。

    绑定匿名函数是让人头疼的,对于他们调试,修改,测试或者重用都是困难的。因此可以使用对象去组织和命名你的处理方法和回调函数
    // bad code  
    $(document).ready(function() {  
        $('#magic').click(function(e){  
                $('#yayeffects').slideUp(function() {  
                        // TODO some codes  
                });  
        });  
        $("#happiness").load(url + ' #unicorns',function(){  
            // TODO some codes  
        });  
    });  
      
    // better  
    var PI = {  
         onReady :  function(){  
                $('#magci').click(PI.candyMtn);  
                $('#happiness').load(PI.url + ' #unicorns', PI.unicornCb);  
         },  
         candyMtn : function(e) {  
                $('#yayeffects').slideUp(PI.slideCb);  
         },  
         slideCb : function() { // TODO some codes},  
         unicornCb : function() { // TODO some codes}  
    };  
    $(document).ready(PI.onReady);  
    

    5.选择器的优化

    5.1.通过ID来获取元素是最好的选择

    // fast  
    $('#container div.robotarm'); // 获取元素id=container中div元素class=robotarm的元素
    
    // super-fast  
    $('#container').find('div.robotarm');  
    
    $.fn.find方法是快速的,因为对于第一个选择$('#container')其实质是通过document.getElementById()来实现的。document.getElementById()是浏览器原生方法

    5.2.选择器的右边要具体化,而不是左边。

    阅读全文......