============================J2SE================================
1.ҲһֲɣںString֮ת
	Date->String
		private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");		/Ԥڵĸʽ
		String reDate=sdf.format(date);	
		Pattern p=Pattern.compile("-");
		String[] reList=p.split(reDate);
		ڻΪ
	String->Date
		private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");		/Ԥڵĸʽ
		try {
			reDate=sdf.parse(date);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
2.ķڲڶʱnewList͵ģͬǱnewģõʱObject͵ıԶֵ

3.&& Ǻͣ&ʾλ㣻

4.ϲһԣaddAll(Collection),ʾһһУ磺
	ΪȥListеظԪأԽListȫӵSetС
	
=============================Hibernate===========================
1.HibernateԶӳ䣺pojoSutdentһSetԣΪTeacher
	<set name="teachers" table="teacher_student">  
    	<key column="student_id"/>  
        <many-to-many class="Teacher" column="teacher_id"/>  
    </set>
    	a  ҪҴ˽ʦѧӦҵѧϵ students,<set name="students" table="teacher_student">
		b ͬʱָҪҵмҪ֪мнʦidӦֶ:	<key column="teacher_id"/>
		c  ڴмҵһ˽ʦid:teacher_idӦѧidstudent_id;
		d Ŵѧidѧҵһļ¼ڶģҲһѧ
		--------------------------------------
		RoleУһEmployee͵SetͱemployeesEmployeeRole͵SetͱrolesγɶԶϵ
		Role
		<set name="employees" table="em_ro">		//tableΪм
			<key column="role_id"></key> 	//мɵı
			<many-to-many class="Employee" column="employee_id"></many-to-many>		//ָӳĶԷ࣬Լֶ֮Σcolumn
		</set>
		
		Employee
		<set name="roles" table="em_ro">		//tableΪм
			<key column="employee_id"></key>		//мɵı
			<many-to-many class="Role" column="role_id"></many-to-many>		//ָӳĶԷ࣬Լֶ֮Σcolumn
		</set>
		

2.ڶԶӳУ˫󶨵ڲУֻҪһξͿˡô˶󶨡

3.lockΪMysqlеı֣ɵtablelockֶΣ

4.һԶӳ䣺Powerࣺ
		<set name="roles">
			<key column="power_id"></key>	//manyһ˵ıУһֶΣΪࣨoneˣ
			<one-to-many class="Role"/>		//ָmany˵
		</set>

5.һӳ䣺Roleࣺ
		<many-to-one name="power" column="power_id"></many-to-one> //nameΪPowerеָcolumnΪroleӳıжӦֶΣΪ
		
5.booleanHibernateжӦֶԣboolean, yes_no  true_false  Java  boolean  java.lang.Boolean ˵
	

5.ӳļĸʽ
	<?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"> 		//ӳļDTD
	<hibernate-mapping package="com.desktophrm.domain">		//ӳĵĿʼָӳڵİ
	<class name="Role" table="hr_role" catalog="mis">		//ӳ࣬Ѿıʹõݿ⣻
	<id name="id" column="id" length="5">		//ָidӦıеֶԼԣgeneratroΪ˵idɷʽnativeΪȡݿԴɷʽ
			<generator class="native"></generator>
	</id>
	<property name="name" column="name" length="50"></property>		//ӳķʽָڱֶԼֶεԣ
	
6.setorder-by÷
	һSetԣprivate Set<Role> roles;		//setر˳
	ӳ֮hbmļкΪʹصݰһ
		<set name="dataSources" order-by="id">		//ԱididָԷidDataSourceid
			<key column="empl_id"></key>
			<one-to-many class="DataSource"></one-to-many>
		</set>
		
	עһ㣬ǶԶӳУҪԷصSetΪԶһмorder-byűûidֶΣҪʹñеʵֶΣ
	<set name="roles" table="hr_em_ro" order-by="employee_id">	//employee_idǱеidеidԡ
			<key column="employee_id"></key>
			<many-to-many class="Role" column="role_id"></many-to-many>
		</set>
	
7.setProperties() Զcustomerʵֵƥ䵽ϣҪƱҪʵӦͬ
	Customer customer=new Customer();  
	customer.setName(pansl);  
	customer.setAge(80);  
	Queryquery=session.createQuery(from Customer c where c.name=:nameandc.age=:age);  
	query.setProperties(customer); 
	
8.Hibernate ʵѯŶԼ̳йϵжǰӳʵ̳йϵеEmployeeʵֱ HourlyEmployeeSalariedEmployee,HQL䣺fromEmployee,ִмʱ HibernateEmployeeʵӦݣ HourlyEmployeeSalariedEmployeeӦݣ

9.ѯмֶ,new list(),עlistlСдġҲҪͨquery.list()listŵĲĬϵObjectˣList   
	  String hql = " select new list(name,passwd) from Users";   
10.޸Ĭϲѯ(query.list())Object[]ʽأԶͷ
	String hql = " select new  com.domain.MyUser(name,passwd) from Users"; ԱҪн2Ĺ캯
	ͨ query.list()listŵĲĬϵObject,ԶMyUser,ӰString hql = "from Users";еUsersҲǱӰģΪUsers.hbm.xml< hibernate-mapping auto-import="true"> auto-importĬֵΪtrueauto- importҲԲд,Զ 
	
11.hqlеԵ÷
	hql="update Position post set post.dept.id=115 where post.id=:postId and post.dept.id=:deptId";	//ʹеid
		Query q=s.createQuery(hql);
		q.setInteger("postId", postId);
		q.setInteger("deptId", deptId);
12.hql䣺
	hql="update Department dept set dept.deptName=:name, dept.description=:description where dept.id=:deptId";	//עsetжʹãáǡand
	
13.hqlboolean÷
	hql="update Employee em set em.remove=false where em.id=:eeId and em.post.id=:postId";
	removeΪһbooleanôӳļУtypeΪBooleanڸУremove=true/falseӳ䡣
	mysqlݿУֶεΪbitֻܴ洢01.
	ture=1false=0
	ע⣬remove=true/falseеtrue/falseҪá
	
14.ڵıҪʼеı򲻱Ҫ

15.һbooleanֵmysqlΪnullôͨhqlʱͻ׳쳣org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.desktophrm.domain.Position.remove

16.sessionupdatesaveOrUpdateʹã
	s.update("Position", post);		//һΪʵƣڶΪҪµĶ
	ֻҪ¶id䣬Ǹԭ
	
17.Session commitرյ⡣sessionһs=HibernateUtil.getSession();ʹʱcommitᵼSessionرա
	취ǣÿжֵһΣ˵sһһµsessionڱķcommitرպ󣬴ıܵӰ죬ճʹá
	
18.${#session.emId }jstl﷨޷ʹ#session.emIdʽֻ<s:property value="#session.emName"/>вʹ

19.<a href>ʹsessionеֵķ<a href="emdata.action?flag=<s:property value='#session.emId' />">ҲʹjstlʽҪ
	Ϊ<a href>бֵķ<a href="emdata.action?flag=0">ţֵã
	
20.ActionеıԻȡ<a href>еıǰActionеıgettersetter

21.doubleͱ2/3ֵ޷㡣

22.inΪhtmlı֣actionвinĶ󡣵ȻҲпActionвֻĸı

23.<s:hidden>÷textfieldýtextfileڡ
	ȷ÷<s:hidden name="emId"></s:hidden><s:hidden name="inId"></s:hidden>
	ķ<s:hidden><s:textfield name="emId" disabled="true"/></s:hidden><s:textfield name="inId" disabled="true"/>
	
24.javaڵĲ
	ʹCalendarвjavaѾʹDateв
	Calendar calendar=Calendar.getInstance();
	calendar.add(Calendar.MONTH,i);		//iΪΪǰ£Ӽ£ΪΪټ¡
	Date per=calendar.getTime();
	һСţjavaе·Ǵ0-11ģָʹgetMonthص·ݻʵʵС1
	
25.ݲһûform棬һAction->jsp->actionֵķ
	<a href="nextsrc?emId=<s:property value='emId'/>&perm=<s:property value='perm' />">NextMonth</a>
	
26.%÷ڽActionеֵݵjspУһʱã
	<s:hidden name="emId" value="%{emId}"></s:hidden><s:hidden name="inId" value="%{inId}"></s:hidden>
	
27.ύݵķActionʹList
	Actionprivate List<IndiData> indiDataList		//IndiDataһװ˺ܶԵ
	jsp	<s:iterator value="inList" status="stat">		//statusڵõListָ
			<td><s:textfield name="%{'indiDataList['+#stat.index+'].indiSrcValue'}"/></td>		//ΪװԣҪָԣindiSrcValue
			<td><s:textfield name="%{'indiDataList['+#stat.index+'].indiSrcCont'}"/></td>		//#stat.indexָ
			<td><s:hidden name="%{'indiDataList['+#stat.index+'].inId'}" value="%{id}"/></td>
	conversion:ResultAction-conversion.properties
				Element_indiDataList=com.desktophrm.domain.IndiData			//indiDataList: ActionеListcom.desktophrm.domain.IndiDataӦķװ
				
28.<s:if>%÷
	<s:if test="%{<s:property value='remove'/>}">ɾ</s:if>		//testıʽʹ%{}ãʾڲһԵʽ
	ʵ÷ǲȷģ<s:property>õboolean޷<s:if>ʹãiteratorʹidԣ
	<s:iterator value="deptList" status="stats" id="dept">
	<s:if test='%{#dept.remove}'>ɾ</s:if>		//ʹognlʽ#idĶϵǸdeptٻȡе
	<s:else></s:else>		//<s:else>ֱӸںģǰϵ
	
29.<s:iterator>÷
	<s:iterator value="deptList" status="stats">		//statusڻȡ顢бָ
	<s:property value="#stats.index+1"/>		//ȡбָţ+1Ϊ鶼Ǵ0ʼעҪʹ#ţΪָ벻ǴValueStackеġ
	
30.session.update()÷⣺
	һһΪôһʱ򣬲ʹupdate
	dept.setId(deptId);
	s.saveOrUpdate("Department", dept);		//ΪDepartmentpostڸµʱ򣬻ᱨpostΪա
	Ϊָµķͬʱ
	----------------
	һ·֣
	ʹmergeԱ⣬Ӱ쵽ı
	
31.Actionеexecuteķògetʽǳ鷳Թ˿ͷ

32.<s:select>Ĳ
	<td><s:select list="deptList" name="deptId" listKey="id" listValue="deptName" headerKey="deptId" emptyOption="true"></s:select></td>
	//˵
		//1.listѡбListListڿԴ洢һ
		//2.listд洢Ϊһ󣬿ʹlistKeyָidΪеĳԣʾغݣlistValueĳԣʾjspҳʾ
		//3.nameʾActionеıͬʱҲǷֵı
		//4.emptyOptionʾбУǷһհС
	һ÷Map
	<td><s:select list="#{'true':'ɾ','false':''}" name="post.remove" headerKey="post.remove" emptyOption="true"></s:select></td>
	//˵
		//1.һlistҪʹ#ţңmap͵ıʹáֵָԣ
		//2.ͬͬ
		
33.StrutsеĴֵAction->Action
		<action name="calculate" class="com.desktophrm.action.ResultAction" method="calculate">
			<result name="success" type="redirectAction">  //type="redirectAction"ʾActionת󣬻ᱣһActionеֵ
				<param name="actionName">emdatalist</param>		//תAction
				<param name="deptId">%{deptId}</param>		//һActionдݵĲעʽname="deptId"һActionеı>%{deptId}ActionдݵĲ
			</result>		//Ϳ԰һActionеĳһActionС
		</action>
		
34.Struts2ļ·ķ
	private String daoXML=ServletActionContext.getServletContext().getRealPath("/WEB-INF")+File.separator+"dao.xml";
	ָļľ·
	עһ㣬j2eeeclipseиtempprojectĿļĸ£tempµļҪֶơ