陌上花开

遇高山,我御风而翔,逢江河,我凌波微波

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::

#

北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂天之云 。是鸟也,海运则将徙于南冥。南冥者,天池也。《齐谐》者,志怪者也 。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。天之苍苍,其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟,置杯焉则胶,水浅而舟大也。风之积也不厚,则其负大翼也无力。故九万里,则风斯在下矣,而后乃今培风;背负青天,而莫之夭阏者,而后乃今将图南。蜩与学鸠笑之曰:“我决起而飞 ,抢榆枋而止,时则不至,而控于地而已矣,奚以之九万里而南为?”适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!小知不及大知,小年不及大年。奚以知其然也?朝菌不知晦朔,蟪蛄不知春秋,此小年也。楚之南有冥灵者,以五百岁为春,五百岁为秋;上古有大椿者,以八千岁为春,八千岁为秋,此大年也。而彭祖乃今以久特闻,众人匹之,不亦悲乎?  汤之问棘也是已:“穷发之北,有冥海者,天池也。有鱼焉,其广数千里,未有知其修者,其名为鲲。有鸟焉,其名为鹏,背若泰山,翼若垂天之云,抟扶摇羊角而上者九万里,绝云气,负青天,然后图南,且适南冥也。斥鴳笑之曰:‘彼且奚适也?我腾跃而上,不过数仞而下,翱翔蓬蒿之间,此亦飞之至也。而彼且奚适也?’”此小大之辩也。故夫知效一官、行比一乡 、德合一君、而征一国者,其自视也,亦若此矣。而宋荣子犹然笑之。且举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世,未数数然也。虽然,犹有未树也。夫列子御风而行,泠然善也,旬有五日而后反。彼于致福者,未数数然也。此虽免乎行,犹有所待者也。若夫乘天地之正,而御六气之辩,以游无穷者,彼且恶乎待哉?故曰:至人无己,神人无功,圣人无名.
posted @ 2010-06-08 09:15 askzs 阅读(177) | 评论 (0)编辑 收藏

Ajax+Flash多文件上传是一个开源的上传组件,名称是FancyUpload,其官方网址是:http://digitarald.de/project/fancyupload/。这个组件仅仅是客户端的应用组件,即与任何服务器端的技术没有关系,服务器端可以采用任何后台技术(如JSP、Servlet、ASP等)。应用该组件提供 给我们的最大的好处有如下几点(个人认为,呵呵):

1          仅是客户端的应用组件,服务器端可以采用任何后台技术 
2 可以同时选择多个文件进行上传;
3         以队列的形式排列要上传的文件和其相关信息(如名称、大小等);
4        
可以设置要上传的文件个数、文件类型和文件大小;
5        
有上传进度显示, 直观,实用);
6      
上传的过程中可以随时取消要上传的文件;
7      
平台独立性,由于使用flash和 成熟的AJAX框架(mootools)可以避免对特定浏览器和服务器依赖!
8       
使用简单,文件体积小!
9
  表单无须设置enctype="multipart/form-data"


posted @ 2010-06-07 15:46 askzs 阅读(1168) | 评论 (1)编辑 收藏

转载于http://blog.csdn.net/sunyujia/archive/2008/06/15/2549347.aspx

<html>   
<head>   
 
<title>Add Files</title>   
 
<style>   
 
a.addfile {   
 
background-image:url(http://p.mail.163.com/js31style/lib/0703131650/163blue/f1.gif);   
 
background-repeat:no-repeat;   
 
background-position:-823px -17px;   
 
display:block;   
 
float:left;   
 
height:20px;   
 
margin-top:-1px;   
 
position:relative;   
 
text-decoration:none;   
 
top:0pt;   
 
width:80px;   
 
}   
 
 
 
input.addfile {   
 
/*left:-18px;*/  
 
}   
 
 
 
input.addfile {   
 
cursor:pointer !important;   
 
height:18px;   
 
left:-13px;   
 
filter:alpha(opacity=0);    
 
position:absolute;   
 
top:5px;   
 
width:1px;   
 
z-index: -1;   
 
}   
 
</style>   
 
 
 
<script type="text/javascript">   
 
 
 
function MultiSelector(list_target, max)   
 
{   
 
    // Where to write the list   
 
    this.list_target = list_target;   
 
    // How many elements?   
 
    this.count = 0;   
 
    // How many elements?   
 
    this.id = 0;   
 
    // Is there a maximum?   
 
    if (max)   
 
    {   
 
        this.max = max;   
 
    }    
 
    else    
 
    {   
 
        this.max = -1;   
 
    };   
 
 
 
    /**  
 
     * Add a new file input element  
 
     */  
 
    this.addElement = function(element)   
 
    {   
 
        // Make sure it's a file input element   
 
        if (element.tagName == 'INPUT' && element.type == 'file')   
 
        {   
 
            // Element name -- what number am I?   
 
            element.name = 'file_' + this.id++;   
 
 
 
            // Add reference to this object   
 
            element.multi_selector = this;   
 
 
 
            // What to do when a file is selected   
 
            element.onchange = function()   
 
            {   
 
                // New file input   
 
                var new_element = document.createElement('input');   
 
                new_element.type = 'file';   
 
                new_element.size = 1;   
 
                new_element.className = "addfile";   
 
 
 
                // Add new element   
 
                this.parentNode.insertBefore(new_element, this);   
 
 
 
                // Apply 'update' to element   
 
                this.multi_selector.addElement(new_element);   
 
 
 
                // Update list   
 
                this.multi_selector.addListRow(this);   
 
 
 
                // Hide this: we can't use display:none because Safari doesn't like it   
 
                this.style.position = 'absolute';   
 
                this.style.left = '-1000px';   
 
            };   
 
 
 
 
 
            // If we've reached maximum number, disable input element   
 
            if (this.max != -1 && this.count >= this.max)   
 
            {   
 
                element.disabled = true;   
 
            };   
 
 
 
            // File element counter   
 
            this.count++;   
 
            // Most recent element   
 
            this.current_element = element;   
 
        }    
 
        else    
 
        {   
 
            // This can only be applied to file input elements!   
 
            alert('Error: not a file input element');   
 
        };   
 
    };   
 
 
 
 
 
    /**  
 
     * Add a new row to the list of files  
 
     */  
 
    this.addListRow = function(element)   
 
    {   
 
        // Row div   
 
        var new_row = document.createElement('div');   
 
 
 
        // Delete button   
 
        var new_row_button = document.createElement('input');   
 
        new_row_button.type = 'button';   
 
        new_row_button.value = 'Delete';   
 
 
 
        // References   
 
        new_row.element = element;   
 
 
 
        // Delete function   
 
        new_row_button.onclick = function()   
 
        {   
 
            // Remove element from form   
 
            this.parentNode.element.parentNode.removeChild(this.parentNode.element);   
 
 
 
            // Remove this row from the list   
 
            this.parentNode.parentNode.removeChild(this.parentNode);   
 
 
 
            // Decrement counter   
 
            this.parentNode.element.multi_selector.count--;   
 
 
 
            // Re-enable input element (if it's disabled)   
 
            this.parentNode.element.multi_selector.current_element.disabled = false;   
 
 
 
            // Appease Safari   
 
            // without it Safari wants to reload the browser window   
 
            // which nixes your already queued uploads   
 
            return false;   
 
        };   
 
 
 
        // Set row value   
 
        new_row.innerHTML = element.value + " ";   
 
 
 
        // Add button   
 
        new_row.appendChild(new_row_button);   
 
 
 
        // Add it to the list   
 
        this.list_target.appendChild(new_row);   
 
    };   
 
};   
 
</script>   
 
</head>   
 
 
 
<body>   
 
 
 
<!-- This is the form -->   
 
<form enctype="multipart/form-data" action="http://127.0.0.1:8080/zzgh/cx/upload.jsp" method="post">   
 
<!-- The file element -- NOTE: it has an ID -->   
 
<a href="javascript:void(1==1);" class="addfile" style="cursor: default;" hidefocus="true">   
 
<input id="my_file_element" class="addfile" type="file" name="file_1" size="1" title="点击选择附件">   
 
</a>   
 
<input type="submit" value="上 传">   
 
</form>   
 
 
 
Files:   
 
<!-- This is where the output will appear -->   
 
<div id="files_list" style="padding:5px;border:1px;border-style:solid;border-color:#0000ff;height:100px;width:600px;"></div>   
 
<script>   
 
<!-- Create an instance of the multiSelector class, pass it the output target and the max number of files -->   
 
var multi_selector = new MultiSelector(document.getElementById('files_list'), 100);   
 
<!-- Pass in the file element -->   
 
multi_selector.addElement(document.getElementById('my_file_element'));   
 
</script>   
</body>   
 
</html> 


效果图如下:



posted @ 2010-06-04 17:12 askzs 阅读(433) | 评论 (0)编辑 收藏

一,先新建一个excel文件,调整格式(就是你所想要显示的格式),
二,把刚才新建的excel文件令存为.html(demo.html)文件,
三,新建一个jsp页面, 在该JSP页面头部设置response的ContentType为Excel格式
<% response.setContentType("application/vnd.ms-excel;charset=GBK"); %>
然后设置网页资料是以excel报表以线上浏览方式呈现或者是下载的方式呈现
<%
/ /这行设定传送到前端浏览器时的档名为test1.xls  就是靠这一行,让前端浏览器以为接收到一个excel档 
 //将网页资料以excel报表以线上浏览方式呈现
response.setHeader("Content-disposition","inline; filename=test1.xls");
   //将网页资料以下载的方式
response.setHeader("Content-disposition","attachment; filename=test2.xls");
%>
然后把 demo.html的源代码粘贴在jsp页面,如下

<%@ page contentType="text/html; charset=GBK" %>
<% response.setContentType("application/vnd.ms-excel;charset=GBK");
response.setHeader("Content-disposition","attachment; filename=test2.xls");

%>
<!--以下为保持成html页面的excel的内容 demo.html页面-->
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
<link rel=File-List href="qwe.files/filelist.xml">
<link rel=Edit-Time-Data href="qwe.files/editdata.mso">
<link rel=OLE-Object-Data href="qwe.files/oledata.mso">
<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Created>1996-12-17T01:32:42Z</o:Created>
  <o:LastSaved>2010-05-12T13:59:04Z</o:LastSaved>
  <o:Version>11.9999</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:RemovePersonalInformation/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->
<style>
<!--table
 {mso-displayed-decimal-separator:"\.";
 mso-displayed-thousand-separator:"\,";}
@page
 {margin:1.0in .75in 1.0in .75in;
 mso-header-margin:.5in;
 mso-footer-margin:.5in;}
tr
 {mso-height-source:auto;
 mso-ruby-visibility:none;}
col
 {mso-width-source:auto;
 mso-ruby-visibility:none;}
br
 {mso-data-placement:same-cell;}
.style0
 {mso-number-format:General;
 text-align:general;
 vertical-align:bottom;
 white-space:nowrap;
 mso-rotate:0;
 mso-background-source:auto;
 mso-pattern:auto;
 color:windowtext;
 font-size:12.0pt;
 font-weight:400;
 font-style:normal;
 text-decoration:none;
 font-family:宋体;
 mso-generic-font-family:auto;
 mso-font-charset:134;
 border:none;
 mso-protection:locked visible;
 mso-style-name:常规;
 mso-style-id:0;}
td
 {mso-style-parent:style0;
 padding-top:1px;
 padding-right:1px;
 padding-left:1px;
 mso-ignore:padding;
 color:windowtext;
 font-size:12.0pt;
 font-weight:400;
 font-style:normal;
 text-decoration:none;
 font-family:宋体;
 mso-generic-font-family:auto;
 mso-font-charset:134;
 mso-number-format:General;
 text-align:general;
 vertical-align:bottom;
 border:none;
 mso-background-source:auto;
 mso-pattern:auto;
 mso-protection:locked visible;
 white-space:nowrap;
 mso-rotate:0;}
ruby
 {ruby-align:left;}
rt
 {color:windowtext;
 font-size:9.0pt;
 font-weight:400;
 font-style:normal;
 text-decoration:none;
 font-family:宋体;
 mso-generic-font-family:auto;
 mso-font-charset:134;
 mso-char-type:none;
 display:none;}
-->
</style>
<!--[if gte mso 9]><xml>
 <x:ExcelWorkbook>
  <x:ExcelWorksheets>
   <x:ExcelWorksheet>
    <x:Name>Sheet1</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:CodeName>Sheet1</x:CodeName>
     <x:Selected/>
     <x:Panes>
      <x:Pane>
       <x:Number>3</x:Number>
       <x:ActiveCol>1</x:ActiveCol>
      </x:Pane>
     </x:Panes>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Sheet2</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:CodeName>Sheet2</x:CodeName>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
   <x:ExcelWorksheet>
    <x:Name>Sheet3</x:Name>
    <x:WorksheetOptions>
     <x:DefaultRowHeight>285</x:DefaultRowHeight>
     <x:CodeName>Sheet3</x:CodeName>
     <x:ProtectContents>False</x:ProtectContents>
     <x:ProtectObjects>False</x:ProtectObjects>
     <x:ProtectScenarios>False</x:ProtectScenarios>
    </x:WorksheetOptions>
   </x:ExcelWorksheet>
  </x:ExcelWorksheets>
  <x:WindowHeight>4530</x:WindowHeight>
  <x:WindowWidth>8505</x:WindowWidth>
  <x:WindowTopX>480</x:WindowTopX>
  <x:WindowTopY>120</x:WindowTopY>
  <x:AcceptLabelsInFormulas/>
  <x:ProtectStructure>False</x:ProtectStructure>
  <x:ProtectWindows>False</x:ProtectWindows>
 </x:ExcelWorkbook>
</xml><![endif]-->
</head>

<body link=blue vlink=purple>

<table x:str border=0 cellpadding=0 cellspacing=0 width=288 style='border-collapse:
 collapse;table-layout:fixed;width:216pt'>
 <col width=72 span=4 style='width:54pt'>
 <tr height=19 style='height:14.25pt'>
  <td height=19 width=72 style='height:14.25pt;width:54pt'>全球</td>
  <td width=72 style='width:54pt'>问问</td>
  <td width=72 style='width:54pt'>ee</td>
  <td width=72 style='width:54pt'>rr</td>
 </tr>
 <tr height=19 style='height:14.25pt'>
  <td height=19 style='height:14.25pt'>暗暗</td>
  <td>ss</td>
  <td>dd</td>
  <td>ff</td>
 </tr>
 <![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=72 style='width:54pt'></td>
  <td width=72 style='width:54pt'></td>
  <td width=72 style='width:54pt'></td>
  <td width=72 style='width:54pt'></td>
 </tr>
 <![endif]>
</table>

</body>

</html>


中文问题:
查看源代码时发现JSP文件中写死的中文为乱码,则在JSP文件头部添加一行
<%@ page contentType="text/html; charset=gb2312" %>
查看源代码时发现文字为中文,但是用Excel打开为乱码则在<html>与<head>中加入
<meta http-equiv="Content-Type" content="text/html; charset=GBK">

在jsp页面中,要在excel中显示的内容可以从数据库中读取,在此就不做详细的介绍了

posted @ 2010-05-12 22:06 askzs 阅读(4730) | 评论 (0)编辑 收藏

 在DHTML开发中,微软在其DOM中为每个元素实现了一个fireEvent方法。我们知道HTML的事件onXXX可以由系统(IE环境)来管理和触发,也可以直接执行事件的handler,比如onclick,如果被赋予事件处理函数,我们可以用element.onclick()来执行事件处理函数。那么fireEvent用来干嘛呢?

    在MSDN中fireEvent的描述很简单:Fires a specified event on the object.
    bFired = object.fireEvent(sEvent [, oEventObject])

    并且MSDN给出了一个使用fireEvent的示例:
<HTML>
    
<HEAD>
        
<SCRIPT>
        
function fnFireEvents()
        
{
            div.innerText 
= "The cursor has moved over me!";
            btn.fireEvent(
"onclick");
        }

        
</SCRIPT>
    
</HEAD>
    
<BODY>
        
<h1>Using the fireEvent method</h1>
        By moving the cursor over the DIV below, the button is clicked.
        
<DIV ID="div" onmouseover="fnFireEvents();">
            Mouse over this!
        
</DIV>
        
<BUTTON ID="btn" ONCLICK="this.innerText='I have been clicked!'">Button</BUTTON>
    
</BODY>
</HTML>

    这个示例非常的简单,也完全说明了fireEvent的用法。不过这个示例有一点误导我们,从而让我们不容易发现frieEvent更有价值的使用方法。由于button的onclick事件被赋予语句:this.innerText = 'I have been clicked!',这里很容易误导我们,fireEvent产生的是执行了btn.onclick()的效果。嗯,确实是这个效果,但是意义却完全不同,btn.onclick()只是一个函数调用,它的执行必须依赖于用户对其赋值,否则btn.onclick为null,是不能执行btn.onclick()的。而fireEvent('onclick')的效果,"等同于"鼠标在button元素上进行了点击。

    由于IE的事件处理是bubble up方式,fireEvent(sEvent)就显得更加的有意义了,如果我们在一个table元素<table>中监听事件,比如onclick,当点击不同的td做出不同的响应时。如果使用程序来模拟,只能使用fireEvent这种方式,示例如下:

<table border="1" onclick="alert(event.srcElement.innerText);">
    
<tr>
        
<td id="abc">abc</td>
        
<td id="def">def</td>
    
</tr>
</table>
<button onclick="abc.fireEvent('onclick')">
    abc
</button>
<button onclick="def.fireEvent('onclick')">
    def
</button>

    使用abc.onclick()和def.onclick()将得到"Object doesn't support this property or method"异常。

   
abc def

     

    知道了fireEvent的用法,那么我们用它来做什么呢?在开发具有复杂事件处理动作组件时。有时我们需要从程序中去触发一个本身因该鼠标或键盘触发的事件,比如在TreeView控件中,我们一般是使用鼠标点击来Expand&Collapse一个结点,如果我们要用程序代码来实现这个操作怎么办呢?当然直接执行事件处理函数是可以的,不过如果事件处理函数依赖于event变量中的状态值,那么就必须使用fireEvent方法。

    原来我曾经说过,因该把事件处理的函数封装起来,便于直接调用。比如上面说到的TreeView节点的Expand和Collapse,我在TreeView控件中都是把它们封装成两个函数Expand和Collapse,在节点被点击时,执行:
 OpIcon.onclick = function()
 {
     
var objNode = this.Object;
     
if ( objNode.m_IsExpanded )
         objNode.Collapse();
    
else
         objNode.Expaned();
 }

    这样一来,在程序中控制Expand和Collapse也就是分别执行函数而已。不过后来发现既然DOM中有fireEvent方法,似乎我在"动态载入数据的无刷新TreeView控件(4)"中的某些想法也不是很必要了。

转载:http://www.cnblogs.com/birdshome/archive/2005/04/07/128182.html
posted @ 2010-04-01 22:19 askzs 阅读(386) | 评论 (0)编辑 收藏

select 或text的onchange事件需要手动(通过键盘输入)改变select或text的值才能触发,如果在js中给select或text赋值,则无法触发onchang事件,
例如,在页面加载完成以后,需要触发一个onChange事件,在js中用document.getElementById("se").value="ttt";直接给select或text赋值是不行的,要想实现手动触发onchange事件,需要在js给select赋值后,加入下面的语句,(假设select的id为sel)
document.getElementById("sel").fireEvent('onchange') 来实现,
例子:
     <html><body>
    
    
<select id="sel" name="test" onchange="demo()">
      
<option value="1" selected>测试一</option>
  
<option value="2">测试二</option>
  
<option value="3">测试三</option>
  
<option value="4">测试四</option>
   
</select>
 
<input id="tex" type="text" name="text1"  id="text1">
   
  
<script>
  
  document.getElementById(
"sel").value="3";
  document.getElementById(
"sel").fireEvent("onchange");
  
function demo()
  {
   
var d=document.getElementById("sel").value;
   document.getElementById(
"tex").value=d;
   
//alert(d);
  
  }
  
</script>
    
</body></html>

上面的代码产生的效果就相当于鼠标在select元素上进行了选择,模仿出了select的onchange效果

posted @ 2010-04-01 22:15 askzs 阅读(39975) | 评论 (10)编辑 收藏

如果在eclipse中误删除了文件,可以通过eclipse自己恢复,但是有时间限制,只能恢复当前时间前七天的,
在eclipse中,右键点击删除的项目名,选择 restore from local history...,可以恢复七天内删除的文件

posted @ 2010-03-31 21:01 askzs 阅读(530) | 评论 (0)编辑 收藏

使用common-fieupload 实现文件上传,有时会遇到文件名或者是表单内容是乱码,

1  调用FileUpload.settingHeaderEncoding("UTF-8"),这项设置可以解决路径或者文件名为乱码的问题。
2  在取字段值的时候,用FileItem.getString("UTF-8"),这项设置可以解决获取的表单字段为乱码的问题

posted @ 2010-03-18 20:56 askzs 阅读(340) | 评论 (0)编辑 收藏

反编译插件jadclipse下载:
http://jadclipse.sourceforge.net/wiki/index.php/Main_Page
选择适合版本的jar文件下载
然后根据Installation 的说明安装配置
1,把下载的 JadClipse JAR 文件放在Eclipse安装目录的plugins文件夹下,(我本机的路径是D:\MyEclipse 6.0\eclipse\plugins)
2,重启Eclipse,
3,下载jad,http://www.varaneckas.com/jad ,选择适合的版本,
4,把 jad.exe 放在系统路径中,(例如 C:\Program Files\Jad\jad.exe),然后 在Eclipse中选择Window > Preferences... > Java > JadClipse > Path to Decompiler,填写jad.exe的路径,在Directory for tempcrary files中填写临时文件路径,如下图



5,选择,Window > Preferences... > General > Editors > File Associations  选择*.class文件,如下图


选择 Associated editors 选中 JadClipse  class File Viewer ,选择右边的 Default 按钮,如下图


JadClipse  class File Viewer 变为 defaule之后,如下图

至此,jadClipse插件就安装完成了,你可以双击 class文件 或者是把鼠标放在想看的类或方法名上,然后按住ctrl点击,就可以看到反编译后的源文件了,

posted @ 2010-03-06 10:01 askzs 阅读(4318) | 评论 (0)编辑 收藏

SQL SERVER 和 ACCESS 以及 MYSQL 中, 都有一种自增字段, 通常被用来做主键或索引键, 但是 ORACLE 中,确并没有提供这种功能 ,但我们确经常需要这个功能,可以用以下方法解决,
一,如果你不在集群环境下使用,并且用到了hibernate,那么可以用hibernate提供的产生自动增长类型主键的increment策略,如下
在**.hbm.xml(hibernate映射文件)中配置如下
<class name="com.xx.xx.Test" table="TEST">
<id name="id" type="int" column="ID">
//该句指定使用hibernate自带的increment策略生成主键
<generator class="increment"/>
</id>
<property name="uname" type="java.lang.String" column="UNAME"/>
</class>
这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,
注意 ,increment 实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键,increment不能在集群环境下使用

二,使用hibernate的sequence策略,在oracle中新建一个sequence,在hibernate中使用,如下
在**.hbm.xml(hibernate映射文件)中配置如下
<class name="com.xx.xx.Test" table="TEST">
<id name="id" type="int" column="ID">
//该句指定使用hibernate自带的sequence策略生成主键 ,TEST_SEQ是在数据库中新建的sequence的名称
<generator class="sequence"> 
             <param name="sequence">TEST_SEQ</param> 
        </generator>   
<property name="uname" type="java.lang.String" column="UNAME"/>
</class>
这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,

三,以上两种方法都是通过hibernate实现的,下面给出ORACLE的一种实现方式

 1. 建立 SEQUENCE
CREATE [ OR REPLACE ] SEQUENCE sequence_identity START WITH initial seed INCREMENT BY step MAXVALUE upper bound [NOMAXVALUE] NOCYCLE [empty]
2. 建立 TRIGGER
CREATE [ OR REPLACE ] TRIGGER trigger_identity BEFORE INSERT ON table_name FOR EACH ROW BEGIN SELECT sequence_identity.NEXTVAL INTO :new.column_name FROM DUAL; END;
这样,在java文件中对表增加记录时,只需添加除ID外的其他字段,然后save即可,

posted @ 2010-03-04 11:36 askzs 阅读(1326) | 评论 (0)编辑 收藏

仅列出标题
共3页: 上一页 1 2 3 下一页 
我要啦免费统计