??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲亚洲国产一二区,色8久久精品久久久久久蜜,国产精品亚发布http://www.aygfsteel.com/Jkallen/archive/2006/07/21/59445.htmlJkallenJkallenFri, 21 Jul 2006 08:47:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/07/21/59445.htmlhttp://www.aygfsteel.com/Jkallen/comments/59445.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/07/21/59445.html#Feedback17http://www.aygfsteel.com/Jkallen/comments/commentRss/59445.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/59445.html阅读全文

Jkallen 2006-07-21 16:47 发表评论
]]>
借第三方cd库解析excel文ghttp://www.aygfsteel.com/Jkallen/archive/2006/05/30/49087.htmlJkallenJkallenTue, 30 May 2006 10:30:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/05/30/49087.htmlhttp://www.aygfsteel.com/Jkallen/comments/49087.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/05/30/49087.html#Feedback3http://www.aygfsteel.com/Jkallen/comments/commentRss/49087.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/49087.html  q里解析excel文g用了W三Ҏ提供的一些类库。Jakarta的POI目提供了一l操UWindows文档的Java APIQ如下几个类提供了操作Excel?/p>

  件的方便的途径QHSSFWorkbook、HSSFSheet、HSSFRow、HSSFCellQ分别代表了Excel电子表格中的Book、Sheet、行和单元格。你可以在下面地址下蝲到最新的POI工具包:
  http://jakarta.apache.org/poi/index.html

一些常用操作如下:

// 所导入的第三方cd
import  org.apache.poi.hssf.usermodel.HSSFCell;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;
import  org.apache.poi.poifs.filesystem.POIFSFileSystem;

// 初始?/span>
POIFSFileSystem poiFs = new  POIFSFileSystem(inputStream);
HSSFWorkbook wb 
=   new  HSSFWorkbook(poiFs);
HSSFSheet sheet 
=  wb.getSheetAt( 0 );
int  rowNumber = sheet.getFirstRowNum();
int  lastRowNumber = sheet.getLastRowNum();


  通过sheet.getRow(rowNumber)取得一行的数据?/p>

  Ҏ一行HSSFRowQ它可以通过getFirstCellNum(cellNum) or getLastCellNum(cellNum)取得此行的格?列数)?/p>

  通过HSSFCell可以判断每个表格中的数据cdQDOC中描q如下:

 

static   int  CELL_TYPE_BLANK 
          Blank Cell type (
3
static   int  CELL_TYPE_BOOLEAN 
          Boolean Cell type (
4
static   int  CELL_TYPE_ERROR 
          Error Cell type (
5
static   int  CELL_TYPE_FORMULA 
          Formula Cell type (
2
static   int  CELL_TYPE_NUMERIC 
          Numeric Cell type (
0
static   int  CELL_TYPE_STRING 
          String Cell type (
1


  q样Q对于一个现有的excel文gQ我们可以取得它所以行的数据,q对行中的每条数据根据不同的cdq行操作了!

excel文g中的一行具体cell转换成java数据实例:

  private  String getStringCellValue(HSSFCell cell, boolean  dateFlag) {
        String value
= null ;
        
if (cell == null )
            
return   null ;
        
switch  (cell.getCellType()) {
                
            
case  HSSFCell.CELL_TYPE_BOOLEAN:
                value
= String.valueOf(cell.getBooleanCellValue());

                
break ;
            
case  HSSFCell.CELL_TYPE_NUMERIC:
              
if (dateFlag)
                    value
= new  java.text.SimpleDateFormat( " yyyy-MM-dd HH:mm " ).format(cell.getDateCellValue());
                
else   {
//                     value=String.valueOf(cell.getNumericCellValue());
                    value  =   new  DecimalFormat( " 0.########## " ).format(cell.getNumericCellValue());
                }

                
break ;
            
case  HSSFCell.CELL_TYPE_ERROR:
                value
= String.valueOf(cell.getErrorCellValue());
                
break ;
            
case  HSSFCell.CELL_TYPE_FORMULA:
            
case  HSSFCell.CELL_TYPE_BLANK: 
            
case  HSSFCell.CELL_TYPE_STRING:
                value
= cell.getStringCellValue();
                    
if (DATE_CELL.equals(value))
                        dateCellNumber
= cell.getCellNum();
                
break ;
        }

        
return  value;
    }

 

  C现在实中应用当然不会q么单,此类库的更多功能我们可以参考其APIQ在此将中附带了API?/p>

  参考:http://jakarta.apache.org



Jkallen 2006-05-30 18:30 发表评论
]]>
原来JSP里面也可以这样引?/title><link>http://www.aygfsteel.com/Jkallen/archive/2006/05/25/48097.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 25 May 2006 10:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jkallen/archive/2006/05/25/48097.html</guid><wfw:comment>http://www.aygfsteel.com/Jkallen/comments/48097.html</wfw:comment><comments>http://www.aygfsteel.com/Jkallen/archive/2006/05/25/48097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jkallen/comments/commentRss/48097.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jkallen/services/trackbacks/48097.html</trackback:ping><description><![CDATA[ <p>  刚刚才发现原来在JSP面Q当用到其脚本,如在<%=REG%>表达式中,原来REG是可以直接从此JSP面的STRUTS中定义而来Q?br /><br />  从bean标签中引用,比如Q?/p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">bean:define </span> <span style="COLOR: #ff0000">id</span> <span style="COLOR: #0000ff">="birthdayInfo"</span> <span style="COLOR: #ff0000"> name</span> <span style="COLOR: #0000ff">="person"</span> <span style="COLOR: #ff0000"> property</span> <span style="COLOR: #0000ff">="info.birthday"</span> <span style="COLOR: #0000ff">/></span> </div> <p>  看struts参考文档中Qbean:define 是指定义一个在指定范围内bean相关属性的脚本变量QDefine a scripting variable based on the value(s) of the specified bean propertyQ?br /><br />  此中Qperson可能是在request{中预先已经定义好的DTO{等Q这里暂时不是我们所要关注的啦)Q然后直接引用:</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> PrintUtil.printTimeArea((UtilDateDTO)birthdayInfo) </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></span> </div> <p>  PrintUtil与UtilDateDTO均是在JSP面预先包含q来的(也不用关注)Q这些都是后台部分的处理了,q里L说明在JSP中其脚本如何引用STRUTS标签中的变量倹{?br /><br />  <br />  也可以直接从logic中引用,如:</p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">logic:iterate </span> <span style="COLOR: #ff0000">id</span> <span style="COLOR: #0000ff">="detailsdto"</span> <span style="COLOR: #ff0000"> name</span> <span style="COLOR: #0000ff">="eduCalendar"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        type</span> <span style="COLOR: #0000ff">="com.jbbis.netedu.eduadmin.dto.CalendarDetailDTO"</span> <span style="COLOR: #ff0000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        property</span> <span style="COLOR: #0000ff">="details"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />        </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> PrintUtil.printTimeArea((CalendarDetailDTO)detailsdto) </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />       </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">logic:iterate</span> <span style="COLOR: #0000ff">></span> </div> <p> <br />  其原理一L?br />         logic:iterate是用来P代指定范围内一些特定的集合容器QCustom tag that iterates the elements of a collection, which can be either an attribute or the property of an attribute. The collection can be any of the following: an array of objects, an Enumeration, an Iterator, a Collection (which includes Lists, Sets and Vectors), or a Map (which includes Hashtables) whose elements will be iterated over.Q?br /><br />  应用CZQ?br />  在DTO中我的一属?--生日Q在实体与DTO均定义ؓLongQ所以假如有一个ؓ1950-01-01生日的数据,那么在DTO与实体中pCZؓ631124235983 <br /></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img id="Codehighlighter1_2_139_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_139_Open_Text.style.display='none'; Codehighlighter1_2_139_Closed_Image.style.display='inline'; Codehighlighter1_2_139_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /> <img id="Codehighlighter1_2_139_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_139_Closed_Text.style.display='none'; Codehighlighter1_2_139_Open_Image.style.display='inline'; Codehighlighter1_2_139_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</span> <span id="Codehighlighter1_2_139_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://www.aygfsteel.com/images/dot.gif" /> </span> <span id="Codehighlighter1_2_139_Open_Text"> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />java.text.DateFormat _fmt </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span> <span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> java.text.SimpleDateFormat(</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">yyyy-MM-dd</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, Locale.SIMPLIFIED_CHINESE);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <img src="http://www.aygfsteel.com/images/dot.gif" />  <img src="http://www.aygfsteel.com/images/dot.gif" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">logic:notEmpty </span> <span style="COLOR: #ff0000">name</span> <span style="COLOR: #0000ff">="dto"</span> <span style="COLOR: #ff0000"> property</span> <span style="COLOR: #0000ff">="birthday"</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />     </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">bean:define </span> <span style="COLOR: #ff0000">id</span> <span style="COLOR: #0000ff">="curbirthday"</span> <span style="COLOR: #ff0000"> name</span> <span style="COLOR: #0000ff">="dto"</span> <span style="COLOR: #ff0000"> property</span> <span style="COLOR: #0000ff">="birthday"</span> <span style="COLOR: #0000ff">/></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />     </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00"><%</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">_fmt.format(</span> <span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span> <span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">Date</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(((</span> <span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">Long</span> <span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)curbirthday).longValue())) </span> <span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />     </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">logic:notEmpty</span> <span style="COLOR: #0000ff">></</span> <span style="COLOR: #800000">span</span> <span style="COLOR: #0000ff">></</span> <span style="COLOR: #800000">td</span> <span style="COLOR: #0000ff">></span> </div> <p> <br /> <br />  当然q样在JSP中加了个<%=%>W号Q要不就在DTO中额外ؓ生日另一个属性提供对生日的字W显C?"yyyy-MM-dd")?br /><br />  在JSP中恰当应用相x{,不仅~程方便Q而且代码也可以美观不?/p> <img src ="http://www.aygfsteel.com/Jkallen/aggbug/48097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Jkallen/" target="_blank">Jkallen</a> 2006-05-25 18:42 <a href="http://www.aygfsteel.com/Jkallen/archive/2006/05/25/48097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VO(DTO)与PO(DAO)之间的{?/title><link>http://www.aygfsteel.com/Jkallen/archive/2006/04/26/43290.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Wed, 26 Apr 2006 06:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jkallen/archive/2006/04/26/43290.html</guid><wfw:comment>http://www.aygfsteel.com/Jkallen/comments/43290.html</wfw:comment><comments>http://www.aygfsteel.com/Jkallen/archive/2006/04/26/43290.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jkallen/comments/commentRss/43290.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jkallen/services/trackbacks/43290.html</trackback:ping><description><![CDATA[     摘要: PO?Persistence Object  VO?Value Object  VO和PO的主要区别在于:  VO是独立的Java Object。  PO是由HibernateU_其实体容器(Entity MapQ的对象Q它代表了与数据库中某条记录对应的Hibernate实体QPO的变化在事务提交时将反应到实际数据库中?  实际上,q个VO被用作Data Transfer Obje...  <a href='http://www.aygfsteel.com/Jkallen/archive/2006/04/26/43290.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Jkallen/aggbug/43290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Jkallen/" target="_blank">Jkallen</a> 2006-04-26 14:55 <a href="http://www.aygfsteel.com/Jkallen/archive/2006/04/26/43290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate学习---通过XDoclet(ant)生成Hibernate映射文ghttp://www.aygfsteel.com/Jkallen/archive/2006/04/10/40305.htmlJkallenJkallenMon, 10 Apr 2006 11:00:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/04/10/40305.htmlhttp://www.aygfsteel.com/Jkallen/comments/40305.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/04/10/40305.html#Feedback0http://www.aygfsteel.com/Jkallen/comments/commentRss/40305.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/40305.html通过XDoclet可以我们的精力放在编写java源文件上?br />
具体来说是Q?br />只有JavaQ?java--->XDoclet(hibernatedoclet)--->Hbm---->SchemaExport(schemaexport,hbm2ddl)---->数据?/p>

1:java源文件编?/strong>

/*
 * Created on 2006-4-7
 
*/


package  com.entity;

/**
 * 
@author  jkallen
 * @hibernate.class lazy="true" table="syn_dept"
 * @hibernate.cache usage="read-write"
 
*/

public   class  SynDepartment  {
 
 
/**  主键 id */
 
private  Long id;
 
/**  部门名称 */
 
private  String code_name;
 
 
/**
  * 
@return  Returns the id.
  * @hibernate.id generator-class="native" column="id"
  
*/

    
public  Long getId()  {
  
return  id;
 }

 
public   void  setId(Long id)  {
  
this .id  =  id;
 }

 
/**
    * 
@return  Returns the code_name.
    * @hibernate.property column = "code_name"
    
*/

 
public  String getCode_name()  {
  
return  code_name;
 }

 
public   void  setCode_name(String code_name)  {
  
this .code_name  =  code_name;
 }

}




q里用到了几U@hibernate标记的用?br />@hibernate.class标记指定cȝ映射代码Qlazy="true" table="syn_dept"则如
hibernate的映文件class元素的属性值具有相同的意义
@hibernate.id标记指定cȝOID映射代码
@hibernate.property标记指定cȝ属性映代?br />另外q可能用到@hibernate.set(如一对多的情况下)

2:XDoclet--->Hbm(写在build.xml文g中,ANTq行)

< target  name ="toHbm"  
  depends
="compileEntity"  
  description
="Generate hibernate mapping documents" >
  
< hibernatedoclet  destdir ="${generated.dir}" >
   
< fileset  dir ="${src.dir}" >
    
< include  name ="**/entity/*.java"   />
   
</ fileset >
   
< hibernate  version ="2.0"   />
  
</ hibernatedoclet >

  
< copy  todir ="${classes.dir}" >
   
< fileset  dir ="${generated.dir}"   />
  
</ copy >
 
</ target >


通过hibernatedoclet可以生成SynDepartment.hbm.xml映射文g
fileset֐思义是qo文g了?br />注:compileEntity--~译java源文?自定?

3:SchemaExport---->数据?/strong>

< target  name ="toddl"  depends ="init" >
  
< schemaexport  properties ="${classes.dir}/hibernate.properties"  
   quiet
="no"  text ="no"  drop ="no"     
   delimiter
="&#xd;&#xa;go&#xd;&#xa;"  output ="${sql.dir}/${synup.sql.file}"
   
>
   
< fileset  refid ="hibernate.synup.mapping.files"   />
  
</ schemaexport >
  
< echo  message ="Output sql to file: ${sql.dir}/${sql.file}"   />
 
</ target >
 
< fileset  id ="hibernate.synup.mapping.files"  dir ="${classes.dir}" >
  
< include  name ="**/entity/*.hbm.xml"   />
 
</ fileset >


 通过schemaexport向DB中生成table了。其中可能用到如下的一些属性:
 quietQ如果ؓyes,表示不把子DDL脚本输出到控制台
 dropQ如果ؓyesQ只执行删除数据库中的操作,但不创徏新的?br /> textQ如果ؓyesQ只会生成DDL脚本文gQ但不会在数据库中执行DDL脚本
 outputQ指定存放DDL脚本文g的目?br /> configQ设定基于XML格式的配|文Ӟ hbm2ddl(schemaexport)工具从这个文件中d数据库的配置信息
 propertiesQ设定基于java属性文件格式的配置文gQhbm2ddl(schemaexport)工具从这个文件中dDB的配|信?br /> formatQ设定DDL脚本中SQL语句的格?br /> delimiterQؓDDL脚本讄行结束符
 
 在ANT中执行:
 <target name="initOnlySynup" depends="toHbm,toddl">
 </target>
 
 OK,最后生成的映射文g如下Q?br />

<? xml version="1.0" ?>

<! DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
>

< hibernate-mapping >
    
< class
        
name ="com.SynDepartment"
        table
="syn_dept"
        dynamic-update
="false"
        dynamic-insert
="false"
    
>
        
< cache  usage ="read-write"   />

        
< id
            
name ="id"
            column
="id"
            type
="java.lang.Long"
        
>
            
< generator  class ="native" >
            
</ generator >
        
</ id >

        
< property
            
name ="code_name"
            type
="java.lang.String"
            update
="true"
            insert
="true"
            access
="property"
            column
="code_name"
        
/>

        
<!--
            To add non XDoclet property mappings, create a file named
                hibernate-properties-SynDepartment.xml
            containing the additional properties and place it in your merge dir.
        
-->

    
</ class >

</ hibernate-mapping >


 控制C部分信息如下Q?/p>

[schemaexport] drop table syn_dept cascade constraints
[schemaexport] go
[schemaexport] drop sequence hibernate_sequence
[schemaexport] go
[schemaexport] create table syn_dept (
[schemaexport] id number(19,0) not null,
[schemaexport] code_name varchar2(255),
[schemaexport] primary key (id)
[schemaexport] )

DB中已l生成syn_dept表了,快去看下?

关于Xdoclet 中的hibernate标签更多信息可以参考:
http://xdoclet.sourceforge.net/xdoclet/tags/hibernate-tags.html#@hibernate_collection-key__0__1_
我还在一个网友的博客上看C他对此的汉化Q?br />http://blog.csdn.net/fasttalk/archive/2005/09/19/484615.aspx


参考资料:Hibernate持久化技术详?/p>

Jkallen 2006-04-10 19:00 发表评论
]]>
Java中文处理, 资源包后~详解 http://www.aygfsteel.com/Jkallen/archive/2006/04/07/39896.htmlJkallenJkallenFri, 07 Apr 2006 10:29:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/04/07/39896.htmlhttp://www.aygfsteel.com/Jkallen/comments/39896.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/04/07/39896.html#Feedback0http://www.aygfsteel.com/Jkallen/comments/commentRss/39896.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/39896.html阅读全文

Jkallen 2006-04-07 18:29 发表评论
]]>
Struts自定义标{ֺ-----列表昄http://www.aygfsteel.com/Jkallen/archive/2006/04/06/39655.htmlJkallenJkallenThu, 06 Apr 2006 10:55:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/04/06/39655.htmlhttp://www.aygfsteel.com/Jkallen/comments/39655.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/04/06/39655.html#Feedback1http://www.aygfsteel.com/Jkallen/comments/commentRss/39655.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/39655.html阅读全文

Jkallen 2006-04-06 18:55 发表评论
]]>
一个相当好的自定义标签---分页(? http://www.aygfsteel.com/Jkallen/archive/2006/03/17/35890.htmlJkallenJkallenFri, 17 Mar 2006 15:44:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/03/17/35890.htmlhttp://www.aygfsteel.com/Jkallen/comments/35890.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/03/17/35890.html#Feedback1http://www.aygfsteel.com/Jkallen/comments/commentRss/35890.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/35890.html ?a href="/Jkallen/archive/2006/03/13/35110.html">上一个介l?/a>里面主要讲到了分|{配置Q逻辑处理Q引用?br />我们在action中:

// JSP中引用此attribute分页处理

request.setAttribute(
" page " ,page);

然后在JSP中引用此page?br />q次主要看如何能q对DB操作实现此page?br />
处理逻辑Q?br />1Q根据SQL语句Q当前页面,面大小{参敎ͼ得到一pȝdata?br />2Q根据得到的dataQ再加上当前面Q页面大可以实例化一个pagecd体?br />3Q将此实体{换成便于到前台显C的DTO?br />
具体如下Q?br />
首先Q我们根据查询语句从DB中得Cpd相关数据

......

Query query = getSession().createQuery(sql);
            setParams(query, paramNames, params);
            
if (pageSize > -1{
                query.setFirstResult(PageManager.getStartIndex(pageNumber,
                        totalCount, pageSize));
                query.setMaxResults(pageSize);
            }

            List data 
= doQuery(query);
            
            
if (pageSize < 0{
                totalCount 
= data.size();
            }

......

可以看到其中除了createQueryQsetFirstResultQsetMaxResults外其实都是用戯定义的一些函数?br />其它函数Q顾名思义应该知道它想实现一个什么功能,象doQuery(query)是得到一个结果集也许是得C个按列表方式抽取l果集 query.list(),or 按P代方式抽取结果集query.iterate().函数getStartIndexQargs[]Q返回数据第一条记录的L位置。其它的也都差不多!

其次得到一个page的实体类QentityQ?或者说得到其DAO对象?/strong>
其实得到一个DTO的page对象比较单。前面列ZpageQ而上面已l从DB中得C一pd数据Qdata),再加上页面的相关信息可以实例化一个page实体了:

.

public  DefaultPage( int  pageSize,  int  pagesCount,  int  pageNumber, Collection data,
                     
int  totalSize)  {
    
this .pageSize  =  pageSize;
    
this .pagesCount  =  pagesCount;
    
this .pageNumber  =  pageNumber;
    
this .totalSize  =  totalSize;
    
this .data  =  data;
  }


.

当然在此前,寚w|据得处理一下,象pageNumber可能如下Q?/font>

/**
     * 
@param  pageNumber
     * 
@param  pageSize
     * 
@param  totalCount
     * Return PageNumber
     
*/

    
protected   static   int  calcPageNumber( int  pageNumber,  int  pageSize,  int  totalCount)  {
        
int  maxPageNumber  =  calcMaxPageNumber(pageSize, totalCount);
        
        pageNumber 
=  pageNumber > maxPageNumber ? maxPageNumber:pageNumber;
        
        
if (pageNumber <= 0 )
            pageNumber
= 1 ;
        
        
return  pageNumber;
    }

easy吧!

最后将此实体{换成适合前台昄的DTO对象?br />q个侧是依据不同的需求去做相应的转换了,一般来说从DB取出来的实体QDAOQ直接与DB中的数据对应。而在DTO中我们可以提供许多更加符合实际的字段与方法,使得我们的JSP面昄更加得心应手Q同时也避免了直与DB交互。它们之间的关系Q?/font> 我ؕ七八p写q些东西Q?font color="#006400">Ƣ迎指正Q?/font>Q?a>?br />
“一般h的标{我不看Q高手写的东西真的值得借鉴Q学习!?/font>

Jkallen 2006-03-17 23:44 发表评论
]]>
一个相当好的自定义标签---分页(一)http://www.aygfsteel.com/Jkallen/archive/2006/03/13/35110.htmlJkallenJkallenMon, 13 Mar 2006 10:50:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/03/13/35110.htmlhttp://www.aygfsteel.com/Jkallen/comments/35110.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/03/13/35110.html#Feedback2http://www.aygfsteel.com/Jkallen/comments/commentRss/35110.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/35110.html阅读全文

Jkallen 2006-03-13 18:50 发表评论
]]>
对DTO,DAO操作的一些肤理?/title><link>http://www.aygfsteel.com/Jkallen/archive/2006/03/09/34445.html</link><dc:creator>Jkallen</dc:creator><author>Jkallen</author><pubDate>Thu, 09 Mar 2006 03:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/Jkallen/archive/2006/03/09/34445.html</guid><wfw:comment>http://www.aygfsteel.com/Jkallen/comments/34445.html</wfw:comment><comments>http://www.aygfsteel.com/Jkallen/archive/2006/03/09/34445.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Jkallen/comments/commentRss/34445.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Jkallen/services/trackbacks/34445.html</trackback:ping><description><![CDATA[ <p> <font color="#000080">q新公司快二个星期了,边看边做现在的项?一头雾水的时候多亏有同事(BOSS)的帮?下面是我对系l中DTO,DAO的操作的一些肤理?不知各位在四层化l构的处理中也是如此,也应该一般化?,恌各位提出指正.谢谢!<br /><br />业务逻辑处理攑֜service?与DB的映放到对应的entity实体cM,前台DB昄攑ֈDTO?对DB的操作放到DAO?在此中可能要用彼此之间的相关转换,比如在DAO中通过相关操作DB中取得的实体可能要{成对应的DTO以便在前台显C?<br /><br />以前台到DB中取一l相x据getNewsList(String args[])Z(Struts+Hibernate+Spring):<br /><br />1 :  前台触发一h(getNewsList)事g,通过相关配置映射其转发到对应的Action?Struts).<br /><br />2 :  在此Action中找C此功能模块对应的相关Servicec?在servicecM应有实现此功能的?  当然也可能就是getNewsList(String args[])  ).</font> <font color="#000080"> <u>每个模块功能都可能有对应着不同的service.q时每个模块的service可放到各自的XML配置文g?在得到我们所需service时可能用到如org.springframework.aop.framework.ProxyFactoryBean(Spring)之类的方?(these contents update on 2006/04/07)<br /></u> <br />3 :  service中的此方法调用DAO中对应能实现此功能的Ҏ来直接对DBq行操作,可能在名cM于HibernateNewsDAO(Hibernate)的实例中.通过(Hibernate)对DB的相x久化操作也就从DB中得C我们惌的结?entity).<br /><br />4 :  结果{换成DTO以便在前台显C?</font> <font color="#000080"> <u>我想q样做的目的应该是ؓ了避免报表查询数据占用缓?将查询l果实例?从DB中查询出来的数据包装到JAVA对象?..(these contents update on 2006/04/07)<br /><br /></u> <br />5 :  在service中将取回的结?以DTO形式表现),l过一pȝ逻辑处理(也可以放到Action中处?,再将此结果返回到昄面.<br /><br /><br />希望能够得到怽的指?.. ... </font> </p> <img src ="http://www.aygfsteel.com/Jkallen/aggbug/34445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Jkallen/" target="_blank">Jkallen</a> 2006-03-09 11:51 <a href="http://www.aygfsteel.com/Jkallen/archive/2006/03/09/34445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>记录学习资源|站http://www.aygfsteel.com/Jkallen/archive/2006/02/11/30249.htmlJkallenJkallenSat, 11 Feb 2006 02:20:00 GMThttp://www.aygfsteel.com/Jkallen/archive/2006/02/11/30249.htmlhttp://www.aygfsteel.com/Jkallen/comments/30249.htmlhttp://www.aygfsteel.com/Jkallen/archive/2006/02/11/30249.html#Feedback0http://www.aygfsteel.com/Jkallen/comments/commentRss/30249.htmlhttp://www.aygfsteel.com/Jkallen/services/trackbacks/30249.html1   
Spring

1.1Spring Live中文文档

http://searchwebservices.techtarget.com.cn/wpsum/29/2217529.shtml?504

1.2 Spring实战

http://searchwebservices.techtarget.com.cn/wpsum/75/2215575.shtml?2994

1.3  Spring - Java/J2EE Application Framework

Spring Framework 开发参考手册(中文版)

http://www.jactiongroup.net/reference/html/index.html

1.4  Introducing to Spring FrameworkQ中文修订版Q?/font>

http://spring.jactiongroup.net/viewtopic.php?t=453

1.5 Spring Framework 介绍 Qppt培训文档Q?/span>

http://www.jactiongroup.net/doc/Introduction2open-sourceSpringframework4J2EE.ppt

http://www.jactiongroup.net/doc/IntroductionToSpring.ppt

1.6  Spring 中文C֌

http://spring.jactiongroup.net

1.7  中国IT实验?Spring 框架完全q阶专题

http://www.chinaitlab.com/www/techspecial/spring/


1.8 本h再加一个啦:)~~
http://www.springframework.org

2  Appfuse:
http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse

3  DOJO
http://dojotoolkit.org/



Jkallen 2006-02-11 10:20 发表评论
]]>
վ֩ģ壺 ˫| ϼ| ͨ| | | | | | ͼ| ƽ| ʯ| ƽ| | | | ʡ| ګ| ǭ| ո| | ʡ| | | | | Դ| | ʡ| | | | ˷| | | | | | ƽ½| | | |