??xml version="1.0" encoding="utf-8" standalone="yes"?>
<property name="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</property>
]]>
W一U方式:QBC查询
String name = "", info = "";
if (sub != null && sub.getSubname() != null) {
name = sub.getSubname();
}
if (sub != null && sub.getSubinfo() != null) {
info = sub.getSubinfo();
}
Criteria cr = session.createCriteria(Subject.class);
cr.add(Expression.like("subname","%"+name+"%"));
cr.add(Expression.like("subinfo","%"+info+"%"));
W二U方式:HQL查询语句
String hql = "from Subject as s where s.subname like :name and s.subinfo like :info";
// 调用session的获得数据列表方法,传递HQL查询语句
String subnamevalue="要查询的中文?;
String sql="";
sql = "from Pfapp where name like :subname ";
Query query = session.createQuery(sql);
query.setString("subname","%"+subnamevalue+"%");
System.out.println("*********"+sql);
注:Subject为数据库表subject映射的类Q它有相应的属性subname、subinfo及相应的get和setҎQsub为Subject的一个实例化对象?br />
另外说明的是Q如果你不写对象名称Q直接写字段Q那么hibernate按照数据库字段q行查找
如果你写 (对象?对象属性)Q那么hibernate按照ormapping中的映射字段q行查找
q是hibernate的灵zM处!Q?
]]>
<?xml version="1.0" encoding="UTF-8"?>
<project name="gpdi" basedir="." default="deploy">
<!-- Properties and Paths -->
<property name="dir.java.src" value="src" />
<property name="dir.java.build" value="defaultroot/WEB-INF/classes" />
<property name="dir.lib" value="lib" />
<property name="dir.deploy" value="deploy" />
<property name="file.manifest" value="manifest.txt" />
<property name="file.jar" value="gpdi.jar" />
<!-- Just to fool the test -->
<property name="gpdi.root" value="." />
<!-- 排除java源文件的模式?-->
<patternset id="no.java">
<exclude name="**/*.java" />
</patternset>
<path id="project.class.path">
<pathelement location="${dir.java.build}"/>
<fileset dir="${dir.lib}" id="lib.path">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- 初始?建立目录,复制文g -->
<target name="init" depends="clean" description="初始?建立目录,复制文g">
<mkdir dir="${dir.java.build}" />
<mkdir dir="${dir.dist}" />
<copy todir="${dir.java.build}">
<fileset dir="${dir.java.src}">
<patternset refid="no.java" />
</fileset>
</copy>
</target>
<!-- 清理,删除临时目录 -->
<target name="clean" description="清理,删除临时目录">
<delete dir="${dir.java.build}" />
<delete dir="${dir.dist}" />
<echo level="info">清理完毕</echo>
</target>
<!-- ~译源文?->
<target name="compile"
depends="init"
description="~译源文?>
<javac srcdir="${dir.java.src}"
destdir="${dir.java.build}"
deprecation="off"
debug="off"
encoding="gbk"
source="1.5"
target="1.5">
<classpath refid="project.class.path"/>
</javac>
</target>
<!-- 创徏清单文g -->
<target name="create.manifest" description="创徏清单文g">
<manifest file="${dir.java.src}/${file.manifest}">
<attribute name="Built-By" value="${user.name}" />
<attribute name="Main-Class" value="com.mfsoft.net.task.TaskJob" />
<attribute name="Class-Path" value="lib/log4j-1.2.9.jar lib/classes12.jar lib/joone-engine.jar" />
</manifest>
</target>
<!-- 打包cL?-->
<target name="deploy" depends="create.manifest" description="打包cL?>
<mkdir dir="${dir.deploy}" />
<mkdir dir="${dir.deploy}/log" />
<jar jarfile="${dir.deploy}/${file.jar}" manifest="${dir.java.src}/${file.manifest}">
<fileset dir="${dir.java.build}"
includes="db.properties,config.properties,log4j.properties,com/mfsoft/net/task/*.class,com/mfsoft/credit/modelmang/operation/*.class,
com/mfsoft/net/datatranslate/*.class,com/mfsoft/net/pre/*.class,com/mfsoft/icity/platform/database/*.class,com/mfsoft/icity/platform/datashare/*.class,
com/mfsoft/icity/platform/publicclass/*.class,com/mfsoft/credit/viable/*.class" />
</jar>
<!--复制用到的库以及其他文g -->
<mkdir dir="${dir.deploy}/lib"/>
<copy todir="${dir.deploy}/lib">
<fileset dir="defaultroot/WEB-INF/lib" includes="classes12.jar,joone-engine.jar,log4j-1.2.9.jar"/>
</copy>
<mkdir dir="${dir.deploy}/model"/>
<copy todir="${dir.deploy}/model">
<fileset dir="defaultroot/WEB-INF/classes" includes="*.snet"/>
</copy>
</target>
</project>
public ActionForward userSave(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
return mapping.findForward("userSave");
}
String path = mapping.findForward("delete").getPath();
//TODO: d本Action所有的h参数Q将path重新构造,加上h参数
ActionForward forward= new ActionForward(path+"&pageId=1");
forward.setRedirect(true);
//传参数后q回
return forward;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在具体的目应用?我们很少会用C对一的联操?且很多时候一对一的操作可以通过多对一实现,但是一对一有自q好处,是在Q何时候都能保证主外键数据的一致?但是多对一的情况下未必能做?
我在目中具体用C一对一的联操?从网上拿?一个例子来?但是没有成功,于是只好自己研究,现在把修改后的代码帖出来.
本例子?font size="3">hibernate3.jar+oracle数据?br />
库表:
CARD_TEST(CARDID[NUMBER(18)],CARDNUM[VARCHAR2(20)])
USER_TEST(USERID[NUMBER(18)],USERNAME[VARCHAR2(20)])
TestMain.java
package com.gpdi.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class TestMain {
/**
* 存储一个用?br />
* @param user
*/
public void save(User user){
user.setUsername("TEST");
Card card=new Card();
//Card card1=new Card();
card.setCardnum("HGJUYT");
//card1.setCardnum("fghy55");
user.setCard(card);
//user.setCard(card1);
Session session=HibernateSessionFactory.currentSession();
card.setUser(user);
//card1.setUser(user);
Transaction tr=session.beginTransaction();
session.save(user);
//session.save(card);
tr.commit();
session.close();
}
public static void main(String[] args) throws Exception {
TestMain test=new TestMain();
test.save(new User());
}
}
Card.java
package com.gpdi.test;
/**
* Card generated by MyEclipse - Hibernate Tools
*/
public class Card implements java.io.Serializable {
// Fields
private Integer cardid;
private String cardnum;
private User user;
// Constructors
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
/** default constructor */
public Card() {
}
/** full constructor */
public Card(String cardnum) {
this.cardnum = cardnum;
}
// Property accessors
public Integer getCardid() {
return this.cardid;
}
public void setCardid(Integer cardid) {
this.cardid = cardid;
}
public String getCardnum() {
return this.cardnum;
}
public void setCardnum(String cardnum) {
this.cardnum = cardnum;
}
}
User.java
package com.gpdi.test;
import java.util.HashSet;
import java.util.Set;
/**
* User generated by MyEclipse - Hibernate Tools
*/
public class User implements java.io.Serializable {
// Fields
private Integer userid;
private String username;
private Card card;
//private Set card = new HashSet();
// Constructors
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
/** default constructor */
public User() {
}
/** full constructor */
public User(String username) {
this.username = username;
}
// Property accessors
public Integer getUserid() {
return this.userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
}
HibernateSessionFactory.java
package com.gpdi.test;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html}.
*/
public class HibernateSessionFactory {
/**
* Location of hibernate.cfg.xml file.
* NOTICE: Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file. That
* is place the config file in a Java package - the default location
* is the default Java package.<br><br>
* Examples: <br>
* <code>CONFIG_FILE_LOCATION = "/hibernate.conf.xml".
* CONFIG_FILE_LOCATION = "/com/foo/bar/myhiberstuff.conf.xml".</code>
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
/** Holds a single instance of Session */
private static final ThreadLocal threadLocal = new ThreadLocal();
/** The single instance of hibernate configuration */
private static final Configuration cfg = new Configuration();
/** The single instance of hibernate SessionFactory */
private static org.hibernate.SessionFactory sessionFactory;
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* Default constructor.
*/
private HibernateSessionFactory() {
}
}
Card.hbm.xml
package com.gpdi.test;
import org.hibernate.Session;
import com.gpdi.orm.object.Address;
import com.gpdi.orm.object.People;
public class Testp {
/**
* @param args
*/
public static void main(String[] args)
{
People people = new People();
people.setName("linda");
Address address = new Address();
address.setAddressName("yunnan");
address.setCodeNumber("564123");
address.setPeople(people);
people.getAddresses().add(address);
Session session = HibernateSessionFactory.currentSession();
session.beginTransaction();
session.save(people);
session.getTransaction().commit();
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.gpdi.orm.object.People" table="People">
<id name="id" column="peopleId" unsaved-value="0" >
<generator class="increment">
</generator>
</id>
<property name="name" column="name"></property>
<set name="addresses" cascade="save-update">
<key column="peopleId" not-null="true" />
<one-to-many class="com.gpdi.orm.object.Address"/>
</set>
</class>
</hibernate-mapping>
package com.gpdi.orm.object;
import java.util.HashSet;
import java.util.Set;
public class People implements java.io.Serializable
{
private long id;
private String name;
private Set addresses = new HashSet();
public Set getAddresses() {
return addresses;
}
public void setAddresses(Set addresses) {
this.addresses = addresses;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.gpdi.softevaluate.action;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ProjectSetAction extends DispatchAction
{
/**
* <p>模板验证</p>
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward check(ActionMapping mapping, ActionForm
form,HttpServletRequest request, HttpServletResponse response)throws
Exception
{
String rest="";
String lotId="";
String retn="";
String flag="";
CommDaoFactory mgObj = new CommDaoFactory();
try
{
rest=request.getParameter("rest");
lotId=request.getParameter("lotId");
}
catch(Exception e)
{
}
if(!rest.equals("0")||!rest.equals("")||rest!=null)
{
flag="no";
}
else
{
flag="ok";
}
PrintWriter out=response.getWriter();
//服务器返回信?br />
out.write(flag);
out.close();
//d本Action所有的h参数Q将path重新构造,加上h参数
//ActionForward forward= new ActionForward("project/projectSet.do?do=add&lotId=6");
//forward.setRedirect(true);
//传参数后q回
//return forward;
return mapping.findForward(null);
}
public
ActionForward creattable(ActionMapping mapping, ActionForm
form,HttpServletRequest request, HttpServletResponse response)throws
Exception
{
//实现功能代码
return mapping.findForward("create");
}
}
3.struts.config.xml
<action attribute="projectSetForm" name="projectSetForm"
parameter="do" path="/project/projectSet" scope="request"
type="com.gpdi.softevaluate.action.ProjectSetAction" validate="false">
<forward name="list" path="/project/viewProject.jsp" />
<forward name="add" path="/project/addProject.jsp" />
<forward name="create" path="/project/createTable.jsp" />
</action>
js代码:
<script language="javascript">
var tag = false;
function doDelete()
{
if(deletecheck())
{
var theForm=document.projectSetForm;
theForm.action = "projectSet.do?do=delete&lotId=<%=request.getParameter("lotId") %>";
theForm.submit();
}
}
function deletecheck()
{
var theForm = document.projectSetForm;
var checked = false;
if(typeof(theForm.checkboxDelete.length)=="undefined"){
if(theForm.checkboxDelete.checked == true){
checked = true;
}
}else{
var len = theForm.checkboxDelete.length;
for (var i=0;i<len;i++){
if(theForm.checkboxDelete[i].checked == true){
checked = true;
break;
}
}
}
if(!checked){
alert("误选择一条要删除的记录!")
return(false);
}
if(confirm("定要删除吗Q?)){
return(true);
}
return(false);
}
function allcheck(){
var theForm = document.projectSetForm;
var len = theForm.checkboxDelete.length;
var i = 0
if (tag == false)
for (i=0;i<len;i++){
theForm.checkboxDelete[i].checked = true;
tag = true;
}
else{
for ( i=0;i<len;i++){
theForm.checkboxDelete[i].checked = false;
tag = false;
}
}
}
</script>
ScoreSetExport scoreSetExport = new ScoreSetExport();
LinkedHashMap hm = new LinkedHashMap();
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
org.hibernate.classic.Session session = sessionFactory.openSession();
Query query =session.createQuery("from ScoreViable");
List users=query.list();
session.close();
sessionFactory.close();
for (ListIterator iterator = users.listIterator(); iterator.hasNext(); )
{
ScoreViable user = (ScoreViable) iterator.next();
System.out.println(user.getBeforCount() +"\n\tAge: " + user.getEndCount());
maxscore=user.getBeforCount()+"";
minscore=user.getEndCount()+"";
}
str[0]=scoreid;
str[1]=maxscore;
str[2]=minscore;
List<ScoreRecordDetail> list = scoreSetExport.exportScoreSet(str,hm);
ExcelManagerIf eem = ExcelManagerFactory.getInstance();
/******************************************************************/
/**不去掉一行仍然调用export,L一行调用export1,只针对一U汇d?/
//eem.export(response, list,hm);
eem.export1(response, list,hm);
/******************************************************************/
return null;
}
}
3.ExcelManagerIf.java
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.gpdi.orm.object.ScoreRecordDetail;
public interface ExcelManagerIf
{
/********************************************************************************************************/
/** 2008-04-18 11:54*/
public boolean export1(HttpServletResponse response, List<ScoreRecordDetail> list,LinkedHashMap hashMap);
/********************************************************************************************************/
}
4.ExcelManagerFactory.java
public class ExcelManagerFactory
{
private static String key = "key";
private ExcelManagerFactory() {
}
private static ExcelManagerIf instance = null;
public static ExcelManagerIf getInstance(){
if(instance == null){
synchronized(key){
if(instance == null){
instance = new ExcelManagerImpl();
}
}
}
return instance;
}
}
5.ExcelManagerImpl.java
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFFooter;
import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
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.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
import org.hibernate.Session;
public class ExcelManagerImpl implements ExcelManagerIf
{
/***************************************************************************************************************/
/**2008-04-18 11:36 汇d出去掉无用的I格*/
public boolean export1(HttpServletResponse response, List<ScoreRecordDetail> list,LinkedHashMap hashMap) {
Session session = null;
try {
// 生成电子表格文g
HSSFWorkbook wb = new HSSFWorkbook();
// 通过先徏立表|后命名可以定义用的~码Q从而保证汉字的正常昄
HSSFSheet sheet1 = wb.createSheet();
/********************************************/
/**d 2008-04-15导出打印默认方式,trueQ横?nbsp; falseQ纵?/
sheet1.getPrintSetup().setLandscape(true);
/********************************************/
sheet1.setColumnWidth((short) 0, (short) 5000);
sheet1.setColumnWidth((short) 1, (short) 5000);
sheet1.setColumnWidth((short) 2, (short) 5000);
sheet1.setColumnWidth((short) 3, (short) 5000);
// wb.setSheetName(0, "开发商资料",HSSFWorkbook.ENCODING_UTF_16);
// HSSFRow row;
// 先定义一个字体对?br />
HSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);// 字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗
// 定义表头单元格格?br />
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFont(font);// 单元格字?br />
cellStyle.setBorderBottom(cellStyle.BORDER_THIN);// 单元D?br />
cellStyle.setBorderTop(cellStyle.BORDER_THIN);
cellStyle.setBorderRight(cellStyle.BORDER_THIN);
cellStyle.setBorderLeft(cellStyle.BORDER_THIN);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水^寚w方式
// 定义新的调色板以便定义自q颜色
HSSFPalette palette = wb.getCustomPalette();
// 替换一个默认调色板中已l定义的颜色
palette.setColorAtIndex(HSSFColor.BLUE_GREY.index, (byte) 230, (byte) 230, (byte) 255);
// 使用刚才定义的颜色ؓ填充?br />
cellStyle.setFillForegroundColor(HSSFColor.BLUE_GREY.index);
cellStyle.setFillPattern((short) HSSFCellStyle.SOLID_FOREGROUND);
// 写入表头
HSSFCell c;
// String[] headerName = (String[]) aHeaderName.get(type);
int[] maxLen = new int[4];
int maxCol = list.size() + 3;
ScoreRecordDetail first = list.get(0);
Long scoreId = first.getScoreRecord().getScoreid();
session = HibernateSessionFactory.getCurrentSession();
ScoreSet scoreSet = (ScoreSet) session.createQuery("from ScoreSet where scoreid = :scoreid").setLong("scoreid",
scoreId).uniqueResult();
String titleName = scoreSet.getScoreLot().getLotName() + "-" + scoreSet.getScoreModel().getScoremodelname();
//输出文g名落孙山
String outFileName = scoreSet.getScoreModel().getScoremodelname();
// 在表单中新徏0?br />
HSSFRow row0 = sheet1.createRow((short) 0);
row0.setHeight((short) 600);
c = row0.createCell((short) 0);
HSSFCellStyle cellStyle0 = wb.createCellStyle();
cellStyle0.setFont(font);// 单元格字?
cellStyle0.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水^寚w方式
cellStyle0.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle0.setBorderBottom(cellStyle.BORDER_THIN);// 单元D?br />
cellStyle0.setBorderTop(cellStyle.BORDER_THIN);
cellStyle0.setBorderRight(cellStyle.BORDER_THIN);
cellStyle0.setBorderLeft(cellStyle.BORDER_THIN);
c.setCellStyle(cellStyle0);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue(titleName);// 单元格?br />
sheet1.addMergedRegion(new Region(0, (short) 0, 0, (short) (maxCol-1)));
// 在表单中新徏1?br />
/**
HSSFRow row1 = sheet1.createRow((short) 1);
row1.setHeight((short) 700);
c = row1.createCell((short) 0);
HSSFCellStyle cellStyle1 = wb.createCellStyle();
cellStyle1.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 水^寚w方式
cellStyle1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle1.setBorderBottom(cellStyle.BORDER_THIN);// 单元D?br />
cellStyle1.setBorderTop(cellStyle.BORDER_THIN);
cellStyle1.setBorderRight(cellStyle.BORDER_THIN);
cellStyle1.setBorderLeft(cellStyle.BORDER_THIN);
c.setCellStyle(cellStyle1);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("评标专家{֭Q?);// 单元格?/span>
c = row1.createCell((short) 1);
c.setCellStyle(cellStyle1);// 单元格的样式
c = row1.createCell((short) 2);
c.setCellStyle(cellStyle1);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("日期Q?);// 单元格?/span>
c = row1.createCell((short) 3);
c.setCellStyle(cellStyle1);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
c.setCellValue(sdf.format(new Date()));// 单元格?br />
*/
// 在表单中新徏2?br />
HSSFRow row2 = sheet1.createRow((short) 1);
row2.setHeight((short) 600);
HSSFCellStyle cellStyle2 = wb.createCellStyle();
cellStyle2.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水^寚w方式
cellStyle2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cellStyle2.setFillBackgroundColor(HSSFColor.AQUA.index);
cellStyle2.setBorderBottom(cellStyle.BORDER_THIN);// 单元D?br />
cellStyle2.setBorderTop(cellStyle.BORDER_THIN);
cellStyle2.setBorderRight(cellStyle.BORDER_THIN);
cellStyle2.setBorderLeft(cellStyle.BORDER_THIN);
c = row2.createCell((short) 0);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("专家名称");// 单元格?br />
/*****************************************************************/
sheet1.addMergedRegion(new Region(1, (short) 0, 1, (short) 1));
//sheet1.addMergedRegion(new Region(2, (short) 0, 2, (short) 1));
/*****************************************************************/
row2.setHeight((short) 400);
c = row2.createCell((short) 1);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
//c.setCellValue("目");// 单元格?/span>
row2.setHeight((short) 400);
c = row2.createCell((short) 2);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("分?);// 单元格?/span>
//c = row2.createCell((short) 3);
//c.setCellStyle(cellStyle2);// 单元格的样式
//重复?br />
int rows=0;
if(hashMap!=null){
int j=0;
HSSFRow[] row_repeat= null;
for (Iterator iterator = hashMap.values().iterator(); iterator.hasNext();) {
Map map= (LinkedHashMap) iterator.next();
rows =map.size();
row_repeat=new HSSFRow[map.size()];
for(int i=0;i<rows;i++){
/****************************************************/
row_repeat[i] = sheet1.createRow((short) (2+i));
//row_repeat[i] = sheet1.createRow((short) (3+i));
/****************************************************/
row_repeat[i].setHeight((short) 400);
}
break;
}
for (Iterator iterator = hashMap.values().iterator(); iterator.hasNext();) {
Map map= (LinkedHashMap) iterator.next();
int i=0;
for (Iterator iter_key = map.keySet().iterator(); iter_key.hasNext();) {
SysUser sysUser = (SysUser) iter_key.next();
if(j==0){
c = row_repeat[i].createCell((short) 0);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue(sysUser.getUsername());// 单元格?br />
/******************************************************************/
sheet1.addMergedRegion(new Region(2+i, (short) 0, 2+i, (short) 1));
//sheet1.addMergedRegion(new Region(3+i, (short) 0, 3+i, (short) 1));
/******************************************************************/
c = row_repeat[i].createCell((short) 1);
c.setCellStyle(cellStyle2);// 单元格的样式
c = row_repeat[i].createCell((short) 2);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("40");// 单元格?br />
}
c = row_repeat[i].createCell((short) (3+j));
c.setCellStyle(cellStyle2);// 单元格的样式
c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);//数字?br />
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue(Double.parseDouble(map.get(sysUser).toString()));// 单元格?nbsp;
i++;
}
j++;
}
}
// 在表单中新徏3?br />
/************************************************/
HSSFRow row3 = sheet1.createRow((short) (2+rows));
//HSSFRow row3 = sheet1.createRow((short) (3+rows));
/************************************************/
row3.setHeight((short) 400);
c = row3.createCell((short) 0);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue(scoreSet.getScoreModel().getScoremodelname() + " 评分");// 单元格?br />
/******************************************************************************/
//sheet1.addMergedRegion(new Region((3+rows), (short) 0,(3+rows), (short) 1));
sheet1.addMergedRegion(new Region((2+rows), (short) 0,(2+rows), (short) 1));
/******************************************************************************/
c = row3.createCell((short) 1);
c.setCellStyle(cellStyle2);// 单元格的样式
c = row3.createCell((short) 2);
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue("40");// 单元格?/span>
for (int i = 0; i < list.size(); i++) {
sheet1.setColumnWidth((short) (i + 3), (short) 5000);
ScoreRecordDetail o = list.get(i);
String name = "";
if (o.getDevelopid() != null) {
BasDevelop basDevelop = (BasDevelop) session.createQuery("from BasDevelop where developid = :developid")
.setLong("developid", o.getDevelopid()).uniqueResult();
name = basDevelop.getDename();
} else {
ProductType productType = (ProductType) session.createQuery("from ProductType where productid = :productid")
.setLong("productid", o.getProductid()).uniqueResult();
name = productType.getProdname();
}
/****************************************************************************/
//c = row1.createCell((short) (i + 3));
//c.setCellStyle(cellStyle1);// 单元格的样式
/****************************************************************************/
c = row2.createCell((short) (i + 3));
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellValue(name);// 单元格?/font>
c = row3.createCell((short) (i + 3));
c.setCellStyle(cellStyle2);// 单元格的样式
c.setEncoding(HSSFCell.ENCODING_UTF_16);// ~码
c.setCellType(HSSFCell.CELL_TYPE_NUMERIC);//数字?br />
c.setCellValue(o.getScore());// 单元格?br />
}
// 输出Excel文g
errorOrExportExcel(response, wb, 2 ,outFileName);
public class ExcelManagerFactory {
private static String key = "key";
private ExcelManagerFactory() {
}
private static ExcelManagerIf instance = null;
public static ExcelManagerIf getInstance(){
if(instance == null){
synchronized(key){
if(instance == null){
instance = new ExcelManagerImpl();
}
}
}
return instance;
}
}
2.声明一个接?/span>
package com.factory;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.gpdi.orm.object.ScoreRecordDetail;
public interface ExcelManagerIf {
public boolean export(HttpServletResponse response, List<ScoreRecordDetail> list,LinkedHashMap hashMap);
/********************************************************************************************************/
public boolean export1(HttpServletResponse response,List list,LinkedHashMap hashMap);
/********************************************************************************************************/
}
3.实现接口的类
package com.factory;
import java.io.IOException;
public class ExcelManagerImpl implements ExcelManagerIf
{
public boolean export1(HttpServletResponse response, List list,LinkedHashMap hashMap)
{
//实现具体功能的代码实?br />
}
}
4.调用
HttpServletResponse response=null;
LinkedHashMap hm = new LinkedHashMap();
List list = Object.getList();
ExcelManagerIf eem = ExcelManagerFactory.getInstance();
/******************************************************************/
eem.export(response, list,hm);
1、数据库l构
category表:{ categoryId , categoryName }
item表:{ itemId , itemName }
category_item表:{ idCategory , idItem}
2、Category.hbm.xml
3、Item.hbm.xml
4、Category.java和Item.java
映射文g中还可以不用set而用bagQ只要把set出现的地Ҏ成bagpQ这L应的category.java和Item.java
文g当中可以用List?/span>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD></TD>
</TR>
<TR>
<TD><img src="show.jsp"></TD>
</TR>
</TABLE>
</BODY>
</HTML>