`
czpae86
  • 浏览: 713469 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
hibernate ResultTransformer
private void load(Session session){
		try{
			ResultTransformer resultTransformer = new ResultTransformer(){

				public List transformList(List list) {
					return list;
				}

				public Object transformTuple(Object[] obj, String[] str) {
					UserKey userKey = new UserKey();//包含User,Key对象的实体
					userKey.setUser((User) obj[0]);
					userKey.setKey((Key) obj[1]);
					return userKey;
				}				
			};
			Transaction tx = session.beginTransaction();
			String hql = "select u, k from User as u, Key as k where u.id = k.userId";
			Query query = session.createQuery(hql);
			query.setResultTransformer(resultTransformer);
			List<UserKey> list = query.list();
			for(UserKey uk : list){
				System.out.println(uk.getUser().getUserName());
				System.out.println(uk.getKey().getUserId());
			}
			tx.commit();
		}catch (Exception e) {
			e.printStackTrace();
		}
		
	}
FileUtils
package nl.justobjects.pushlet.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import java.util.Vector;

/**
 * 操作文件工具类
 * @author caizhiping
 * @since Jun 13, 2012 2:22:30 PM
 */
public class FileUtils {
	/**
	 * 缓冲区大小
	 */
	private final static int BUFFER_SIZE = 1024;
	
	/**
	 * 复制文件,新文件名通过UUID生成
	 * @param copyFilePath 源文件完整路径
	 * @param newPath 新文件存放路径
	 * @param del 是否删除源文件
	 * @return
	 */
	public static String copyFile(String copyFilePath, String newPath, boolean del){		
		BufferedInputStream in = null;
		BufferedOutputStream out = null;
		try {
			File oldFile = new File(copyFilePath);
			in = new BufferedInputStream(new FileInputStream(oldFile),BUFFER_SIZE);
			File newFile = new File(newPath);
			if(!newFile.exists()){
				newFile.mkdirs();
			}
			newPath += UUID.randomUUID().toString()+getFileSuffix(copyFilePath);
			out = new BufferedOutputStream(new FileOutputStream(newPath),BUFFER_SIZE);
			byte[] b = new byte[BUFFER_SIZE];
			int n;
			while((n=in.read(b, 0, b.length))!=-1){
				out.write(b, 0, n);
			}
			out.flush();			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(out!=null){
					out.close();
				}
				if(in!=null){
					in.close();
				}
				if(del&&new File(newPath).isFile()){//删除源文件
					new File(copyFilePath).delete();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}			
		}
		return newPath;
	}
	
	/**
	 * 获得文件后缀名
	 * @param originalFileName 文件名
	 * @return
	 */
	public static String getFileSuffix(String originalFileName) {
		int sp = originalFileName.lastIndexOf(".");
		return sp == -1 ? ".*" : originalFileName.substring(sp);
	}
	
	/**
	 * 查找所有文件和文件夹
	 * @param path
	 * @return
	 */
	public static File[] findAll(String path){
		File file = new File(path);	
		File[] files = null;
		try {
			if(file.isDirectory()){
				files = file.listFiles();
			}else{
				System.err.println(FileUtils.class.getName()+"==>该路径不存在或不是目录: "+path);
				files = new File[0];
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return files;
	}
	
	/**
	 * 查找所有文件
	 * @param path 文件路径
	 * @return
	 */
	public static File[] findFiles(String path){
		File[] files = findAll(path);
		Vector<File> vector = new Vector<File>();
		try {
			for(File f1 : files){
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				if(f1.isFile()){
					vector.add(f1);
				}else{
					File[] f2 = findFiles(f1.getPath());
					for(File file : f2){
						vector.add(file);
					}
				}					
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return vector.toArray(new File[0]);
	}
	
	/**
	 * 查找所有文件夹
	 * @param path
	 * @return
	 */
	public static File[] findFolders(String path){
		File[] files = findAll(path);
		Vector<File> vector = new Vector<File>();
		try {
			for(File f1 : files){
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				if(f1.isDirectory()){
					vector.add(f1);
					File[] f2 = findFolders(f1.getPath());
					for(File file : f2){
						vector.add(file);
					}
				}					
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return vector.toArray(new File[0]);
	}
	
	/**
	 * 删除一个文件
	 * @param path 文件完整路径
	 */
	public static void deleteFile(String path){
		File file = new File(path);
		if(file.isFile()){
			file.delete();
		}
	}
	
	/**
	 * 删除路径下的所有文件
	 * @param path
	 */
	public static void deleteFiles(String path){
		File file = new File(path);
		if(file.isDirectory()){
			File[] files = findFiles(path);
			for(File f : files){ 
				f.delete();
			}
		}
	}
	
	/**
	 * 删除路径下的所有文件和文件夹
	 * @param path
	 */
	public static void deleteAll(String path){
		File file = new File(path);
		if(file.isDirectory()){
			File[] files1 = findFiles(path);
			for (File f : files1) {
				f.delete();
			}
			File[] files2 = findFolders(path);
			for (int i=files2.length-1;i>=0;i--) {
				files2[i].delete();
			}
		}
	}
}
keel.js
<style type="text/css">
.x-panel {
    border-style: solid;
    border-width:0;
}
.x-panel {
    border-color: #99bbe8;
}

.x-panel-header {
    overflow:hidden;
    zoom:1;
    padding:5px 3px 4px 5px;
    border:1px solid;
    line-height: 15px;
    background: transparent repeat-x 0 -1px;
}
.x-panel-header {
    overflow:hidden;
    zoom:1;
}
.x-panel-header {
    color:#15428b;
	font-weight:bold; 
    font-size: 11px;
    font-family: tahoma,arial,verdana,sans-serif;
    border-color:#99bbe8;
    background-image: url(images/panel/white-top-bottom.gif);
}

.x-unselectable, .x-unselectable * {
    -moz-user-select: none;
    -khtml-user-select: none;
    -webkit-user-select:ignore;
}

.x-tool {
    overflow:hidden;
    width:15px;
    height:15px;
    float:right;
    cursor:pointer;
    background:transparent no-repeat;
    margin-left:2px;
}

/* expand / collapse tools */
.x-tool-toggle {
    background-position:0 -60px;
}
.x-tool {
    background-image:url(images/panel/tool-sprites.gif);
}
.x-panel-bwrap {
    overflow:hidden;
    zoom:1;
    left:0;
    top:0;
}

.x-panel-body {
    border:1px solid;
    border-top:0 none;
    overflow:hidden;
    position: relative; /* added for item scroll positioning */
}

.x-panel-body {
    background-color: #FFFFFF;
    border-color: #99BBE8;
}
.x-panel-body {
    overflow:hidden;
    zoom:1;
}
</style>


/**
    2012-7-15
    keel全局
*/

keel = {};
(function(){
    var ua = navigator.userAgent.toLowerCase();
    keel.browser = {
        isIE : /msie/.test(ua),
        isIE6 : /msie 6/.test(ua),
        isIE7 : /msie 7/.test(ua),
        isIE8 : /msie 8/.test(ua),
        isIE9 : /msie 9/.test(ua),
        isChrome : /chrome/.test(ua),
        isFirefox : /firefox/.test(ua)
    }
    keel.checker = {
        isObject : function(v){
            return v !=null && typeof v === 'object';
        },
        isArray : function(v){
            return Object.prototype.toString.apply(v) === '[object Array]';
        },
        isEmpty : function(v){
            return v === null || v === undefined || v === '';
        },
        isElement : function(node){
            return node.nodeType == 1 ? true : false;
        },
        isString : function(v){
            return typeof v === 'string';
        },
        isNumber : function(v){
            return typeof v === 'nubmber';
        },
        isNull : function(v){
            return v === null;
        },
        isUndefined : function(v){
            return typeof v == "undefined";
        },
        isFunction : function(v){
            return typeof v ==='function';
        }
    }

    /**
        继承
        function TMap(){	
                keel.util.Map.call(this);
        }
        keel.extend(TMap,keel.util.Map);

        var map = new TMap();
        for(var i=0;i<10;i++){
                map.add(i,i);
        }

        for(var i=0;i<map.length;i++){
                document.write(map.get(i)+'<br/>');
        }
    */
    keel.extend = function(subClazz, superClazz){
        var f = function F(){};
        var sup = f.prototype = superClazz.prototype;
        sup.constructor = subClazz;
        subClazz.prototype = sup;
    }

    keel.onReady = function(fn,scope){
        document.onreadystatechange = function() {
            if (document.readyState == "complete") {
                if(keel.checker.isFunction(fn)){
                    fn.call(scope||window);
                }
            }
        }
    }

})();


/**
    keel的工具集合
*/
keel.util = {};
keel.util.Map = function(){
    this.map = {};
    this.length = 0;
};
keel.util.Map.prototype = {
    add : function(key,obj){
        if(keel.checker.isEmpty(key)){
            return key;
        }
        this.map[key] = obj;
        this.length ++;
        return obj;
    },
    get : function(key){	
        if(keel.checker.isEmpty(key)){
            return key;
        }
        return this.map[key];
    },
    remove : function(key){	
        if(keel.checker.isEmpty(key)){
            return key;
        }
        this.length --;
        delete this.map[key];	
    },
    removeAll : function(){	
        this.length = 0;
        this.map = {};
    }
};

/**
    keel的dom集合
*/
keel.dom = {
    isElement : function(node){
        return keel.checker.isElement(node);
    },
    getName : function(node){
        return keel.dom.isElement(node) ? node.nodeName : '';
    },
    
    /**
        var el = keel.dom.createElement('div',{height:200,align:'center',title:'div element',cls:['tc2','tc1']});
    */
    createElement : function(){        
        if(arguments.length==0){
            return;
        }
        var name = arguments[0],
            o = arguments[1];
        //var df = document.createDocumentFragment();
        var element = document.createElement(name);
        if(keel.checker.isObject(o)){
            for(var k in o){
                if(!keel.checker.isEmpty(o[k])){
                    if(k=='cls'||k=='className'){
                        keel.dom.addClass(element,o[k]);                
                    }else if(k == 'style'&&keel.browser.isIE){
                        element.style.cssText = o[k];
                    }else if(k == 'width'){
                        element.style.width = keel.checker.isNumber(o[k])? (o[k]+ 'px') : o[k];
                    }else if(k == 'height'){
                        element.style.height = keel.checker.isNumber(o[k])? (o[k]+ 'px') : o[k];
                    }else{
                        element.setAttribute(k,o[k]);
                    }                        
                }                
            }
        }
        return element;
    },
    addClass : function(node,className){
        if(keel.dom.isElement(node)){
            if(keel.checker.isString(className)){
                if((' '+node.className+' ').indexOf(' ' + cn + ' ')==-1){
                    node.className += ' '+className;
                }                
            }else if(keel.checker.isArray(className)){
                for(var i=0,len=className.length;i<len;i++){
                    var cn = className[i];
                    if(keel.checker.isString(cn) && (' '+node.className+' ').indexOf(' ' + cn + ' ')==-1){
                        node.className += ' '+className[i];
                    }                    
                }
            }
        }        
    },
    removeClass : function(node,className){
        var reg = /^\s+|\s+$/g,sp = /\s+/;
        if(keel.dom.isElement(node)){
            if(!keel.checker.isArray(className)){
                className = [className];                
            }
            var oldCls = node.className.replace(reg, '').split(sp);
            for(var i=0,len=className.length;i<len;i++){    
                var cls = className[i];
                if (keel.checker.isString(cls)) {
                    cls = cls.replace(reg, '');
                    for(var j=0;j<oldCls.length;j++){
                        if(oldCls[j]==cls){
                            oldCls.splice(j, 1);
                            break;
                        }
                    }
                }                  
            }
            node.className = oldCls.join(' ');            
        } 
    },
    getWidth : function(node){
        alert(node.clientWidth);//offsetWidth
    }
};

/**
 * keel.Element对象
	var statusDiv = new keel.Element('status');
	statusDiv.addListener('click',function(el,eventType){
		alert(el.id);
		alert(eventType);
	});
 */
keel.Element = function(element){
	this.dom = keel.checker.isString(element) ? document.getElementById(element) : element;
	this.id = this.dom.id;	
}
keel.Element.prototype = {
	addListener : function(eventType,callback){
		var me = this;
		eventType = eventType.toLowerCase();
		if (me.dom.addEventListener) {
            me.dom.addEventListener(eventType, function(){
            	callback.call(me,me.dom,eventType);
            }, false);
        }else if (me.dom.attachEvent) {
            me.dom.attachEvent('on' + eventType, function(){
            	callback.call(me,me.dom,eventType);
            });
        }
	}, 
    removeListener:function (eventType, callback) {
    	var me = this;
        if (me.dom.removeEventListener) {
            me.dom.removeEventListener(eventType, function(){
            	callback.call(me,me.dom,eventType);
            }, false);
        } else {
            if (me.dom.deattachEvent) {
                me.dom.detachEvent(eventType, function(){
	            	callback.call(me,me.dom,eventType);
	            });
            } else {
                me.dom["on" + eventType] = null;
            }
        }
    }
}

/**
*一般事件 	
onclick 	鼠标点击时触发此事件
ondblclick 	鼠标双击时触发此事件
onmousedown 	按下鼠标时触发此事件
onmouseup 	鼠标按下后松开鼠标时触发此事件
onmouseover 	当鼠标移动到某对象范围的上方时触发此事件
onmousemove 	鼠标移动时触发此事件
onmouseout 	当鼠标离开某对象范围时触发此事件
onkeypress 	当键盘上的某个键被按下并且释放时触发此事件.
onkeydown 	当键盘上某个按键被按下时触发此事件
onkeyup 	当键盘上某个按键被按放开时触发此事件
*页面相关事件 	
onabort 	图片在下载时被用户中断
onbeforeunload 	当前页面的内容将要被改变时触发此事件
onerror 	出现错误时触发此事件
onload 	页面内容完成时触发此事件
onmove 	浏览器的窗口被移动时触发此事件
onresize 	当浏览器的窗口大小被改变时触发此事件
onscroll 	浏览器的滚动条位置发生变化时触发此事件
onstop 	浏览器的停止按钮被按下时触发此事件或者正在下载的文件被中断
oncontextmenu 	当弹出右键上下文菜单时发生
onunload 	当前页面将被改变时触发此事件
*表单相关事件 	
onblur 	当前元素失去焦点时触发此事件
onchange 	当前元素失去焦点并且元素的内容发生改变而触发此事件
onfocus 	当某个元素获得焦点时触发此事件
onreset 	当表单中RESET的属性被激发时触发此事件
onsubmit 	一个表单被递交时触发此事件
 */
keel.event = {
	getEvent:function (event) {
        return event || window.event; 
    }, 
    getTarget:function (event) {
        return event.target || event.srcElement;
    }, 
    preventDefault:function (event) {
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },
    addListener : function (element, eventType, callback) {
        var self = this;
        eventType = eventType.toLowerCase();
        if (element.addEventListener) {
            element.addEventListener(eventType, callback, false);
        }else if (element.attachEvent) {
            element.attachEvent('on' + eventType, callback);
        }
    },
    removeListener : function (element, eventType, callback) {
        eventType = eventType.toLowerCase();
        if (element.removeEventListener) {
            element.removeEventListener(element, eventType, callback);
        }else if (element.detachEvent) {
            element.detachEvent('on' + eventType, callback);
        }
    },
    dragdrop : function () {
        var dragdrop = new keel.event.EventTarget();
        var dragging = null;
        var diffX = 0;
        var diffY = 0;
        function handleEvent(event) {
            event = event || window.event;
            var target = event.target || event.srcElement;
            switch (event.type) {
                case "mousedown":
                    if (target.className.indexOf("draggable") > -1) {
                        dragging = target;
                        diffX = event.clientX - target.offsetLeft;
                        diffY = event.clientY - target.offsetTop;
                        dragdrop.fire({ type: "dragstart", target: dragging,
                            x: event.clientX, y: event.clientY
                        });
                    }
                    break;
                case "mousemove":
                    if (dragging !== null) {
                        event = event || window.event;
                        dragging.parentNode.style.left = (event.clientX - diffX) + "px";
                        dragging.parentNode.style.top = (event.clientY - diffY) + "px";
                        dragdrop.fire({ type: "drag", target: dragging,
                            x: event.clientX, y: event.clientY
                        });
                    }
                    break;
                case "mouseup":
                	if(dragging !== null){
                		dragdrop.fire({ type: "dragend", target: dragging,
	                        x: event.clientX, y: event.clientY
	                    });
                	}                    
                    dragging = null;
                    break;
            }
        }
        dragdrop.enable = function () {
            keel.event.addListener(document, "mousedown", handleEvent);
            keel.event.addListener(document, "mousemove", handleEvent);
            keel.event.addListener(document, "mouseup", handleEvent);
        };
        dragdrop.disable = function () {
            keel.event.removeListener(document, "mousedown", handleEvent);
            keel.event.removeListener(document, "mousemove", handleEvent);
            keel.event.removeListener(document, "mouseup", handleEvent);
        };
        return dragdrop;
    }
};

keel.event.EventTarget = function(){
    this.handlers = {};
};
keel.event.EventTarget.prototype = {
    constructor: keel.event.EventTarget,
    addHandler: function (type, handler) {
        if (typeof this.handlers[type] === "undefined") {
            this.handlers[type] = [];
        }
        this.handlers[type].push(handler);
    },
    fire: function (event) {
        if (!event.target) {
            event.target = this;
        }
        if (this.handlers[event.type] instanceof Array) {
            var handlers = this.handlers[event.type];
            for (var i = 0, len = handlers.length; i < len; i++) {
                handlers[i](event);
            }
        }
    },
    removeHandler: function (type, handler) {
        if (this.handlers[type] instanceof Array) {
            var handlers = this.handlers[type];
            for (var i = 0, len = handlers.length; i < len; i++) {
                if (handlers[i] === handler) {
                    break;
                }
            }
            handlers.splice(i, 1);
        }
    }
};


keel.Panel = function(){
	this.width = 100;
	this.height = 100;
	this.title = 'Panel';
	
	//var df = document.createDocumentFragment();
	
	var div1 = keel.dom.createElement('div',{width:this.width,cls:['x-panel']});
	
	var div2 = keel.dom.createElement('div',{cls:['x-panel-header','x-unselectable']});
	var div2_1 = keel.dom.createElement('div',{cls:['x-tool','x-tool-toggle']});
	var nbsp = document.createTextNode(' ');
	var span = keel.dom.createElement('span',{cls:['x-panel-header-text']});
	var title = document.createTextNode(this.title);
	
	
	var div3 = keel.dom.createElement('div',{style:'overflow:auto;', width: this.width, height: this.height,cls:['x-panel-body']});
	//div3.innerHTML = '<p>sadfjsadlkdfjsalkdfj</p>';
	var html = document.createTextNode(' sadfjsadlkdfjsalkdfj');
	div2_1.appendChild(nbsp);
	span.appendChild(title);
	
	div2.appendChild(div2_1);
	div2.appendChild(span);
	
	div3.appendChild(html);
	
	div1.appendChild(div2);
	div1.appendChild(div3);
	//df.appendChild(div1);
	document.body.appendChild(div1);
}









解决IE下insertAtCursor方法插入文字位置问题
 /**
  * 解决IE下insertAtCursor方法插入文字位置问题
  */
 if(Ext.form.HtmlEditor){
 	Ext.form.HtmlEditor.prototype.insertAtCursor = function(text){
        /*if(!this.activated){
            return;
        }*/
        if(Ext.isIE){
            this.win.focus();
            var r = this.getDoc().selection.createRange();
            if(r){
                r.collapse(true);
                r.pasteHTML(text);
                this.syncValue();
                this.deferFocus();
            }
        }else{
            this.win.focus();
            this.execCmd('InsertHTML', text);
            this.deferFocus();
        }
    };
 }
递归获取整颗树例子
/**
	 * 取得文件树
	 * @param request
	 * @param response
	 */
	@RequestMapping(value = "/getTree.json", method = RequestMethod.POST)
	public void getFileTree(HttpServletRequest request, HttpServletResponse response){
		try{
			String idStr = request.getParameter("node");
			String typeId = request.getParameter("typeId");
			String companyCode = request.getParameter("companyCode");
			int id = 0;
			if(idStr != null && !("").equals(idStr)){
				id = Integer.parseInt(idStr);
			}
			int type_id = 0;
			if(typeId != null && !("").equals(typeId)){
				type_id = Integer.parseInt(typeId);
			}
			List<FileClassification> list = fileClassificationService.find(type_id,companyCode);
			
			String jsonStr = createTree(list, id);
			WebUtils.outputStr(response, jsonStr);
		}catch(Exception e){
			e.printStackTrace();
			WebUtils.outMsg(response, "获取失败!", false);
		}
	}


/**
	 * 递归获取整颗树
	 * @param list
	 * @param id
	 * @return
	 */
	private String createTree(List<FileClassification> list, int id){
		JSONArray ja = new JSONArray();
		for(FileClassification l : list){			
			if(l.getP_category_id() == id){
				JSONObject jo = new JSONObject();
				jo.put("id", l.getCategoryId());
				jo.put("text", l.getTitle());
				jo.put("summary", l.getSummary());
				jo.put("displayOrder", l.getDisplayOrder());
				jo.put("p_category_id", l.getP_category_id());
				jo.put("categoryState", l.getCategoryState());
				jo.put("stringAttribute", l.getStringAttribute());
				jo.put("children", createTree(list,l.getCategoryId()));
				jo.put("leaf", jo.get("children").toString().equals("[]")?true:false);
				ja.add(jo);
			}
			
		}
		return ja.toString();
	}
通用分页sql 通用分页sql
SELECT xx.* FROM(SELECT t.*,row_number() over( order by id )AS num FROM  ex_quota_zhibiao t where 1=1  and ( 1=1 and (1=1 and name like '%%' and  1=1) ) ) xx WHERE num BETWEEN 1 AND 15


over( order by 排序字段 ) 
javascript函数内部重复定义变量
var a = 3;
function test(){
  alert(a);//undefined
  var a = 5;test()
};
hibernate笔记
<?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">
<hibernate-mapping>

    <class name="test.entity.Company" table="COMPANY">
        <id name="id" column="ID" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="name" length="128" type="java.lang.String"/>
    </class>

</hibernate-mapping>


<?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">
<hibernate-mapping>

    <class name="test.entity.Employee" table="EMPLOYEE">
        <id name="id" column="ID" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property name="name" length="46" type="java.lang.String"/>
        <property name="address" length="46" type="java.lang.String"/>
        <many-to-one name="company" column="companyId"></many-to-one>        
    </class>

</hibernate-mapping>



package test;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import test.entity.Company;
import test.entity.Employee;
import util.json.JsonHelper;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		search3();
		/*List<Employee> l = search2();
		System.out.println(JsonHelper.encodeObject2Json(l));
		for(int i=0;i<l.size();i++){
			Employee E = (Employee)l.get(i);			
			System.out.println(E.getCompany().getName());				
		}*/
	}
	
	public static void search1(){//HQL的返回值该怎么取得?
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		try{
			Transaction transaction=session.beginTransaction();
			String hql = "select C.name as c_name ,E.name as e_name from " + Company.class.getName() + " C ,"+Employee.class.getName() + " E where C.id=E.companyId";
			Query q = session.createQuery(hql);
			List l = q.list();
			for(int i=0;i<l.size();i++){
				Object[] row = (Object[])l.get(i);
				for(int j=0;j<row.length;j++){
					System.out.println((String)row[i]);
				}
				
			}			
			transaction.commit();
		}finally{
			//session.close();
		}	
	}
	
	public static List<Employee> search2(){//使用Criteria
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		Transaction transaction=session.beginTransaction();
		Criteria criteria = session.createCriteria(Employee.class);
		//criteria = criteria.createCriteria("company");  //关联1
		//criteria = criteria.setFetchMode("company", org.hibernate.FetchMode.JOIN);//关联2
		criteria = criteria.createCriteria("company", Criteria.LEFT_JOIN);//关联3
		List l = criteria.list();
		/*Employee c = (Employee) l.get(0);
		System.out.println(c.getCompany().getName());*/
		return l;
	}
	
	public static void search3(){//HQL
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		try{
			Transaction transaction=session.beginTransaction();
			String hql = "from Employee e left join fetch e.company c";//注意不加fetch,则返回的结果集中的每一条记录是一个Object数组
			Query q = session.createQuery(hql);
			List<Employee> l = q.list();
			for(int i=0;i<l.size();i++){
				Employee E = (Employee)l.get(i);
				System.out.println(E.getCompany().getName());				
			}		
			transaction.commit();
		}finally{
			//session.close();
		}	
	}
	
	public static void addEmployee(){//添加员工,非联级保存
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		Transaction transaction=session.beginTransaction();
		Company c = new Company();
		c.setId(new Integer(1));
		Employee e = new Employee();
		e.setName("艾弗森");
		e.setCompany(c);
		e.setAddress("美国");
		session.save(e);
		transaction.commit();
	}

}
Global site tag (gtag.js) - Google Analytics