第一篇:Hibernate(6)—— 一对多和多对多关联关系映射(xml和注解)总结
Hibernate(6)—— 一对多和多对多关联关系映射(xml和注解)总结
涉及的知识点总结如下:
One to Many 映射关系
o 多对一单向外键关联(XML/Annotation)o 一对多单向外键关联(XML/Annotation)o 懒加载和积极加载
o 一对多双向外键关联(XML/Annotation) Many to Many 映射关系
o 多对多单向外键关联(XML/Annotation)o 多对多双向外键关联(XML/Annotation)o set的inverse元素详解
问题小结
关联关系的优缺点
多对一单向外键关联关系
注意多对一关联是多方持有一方的引用。看一个例子,去淘宝购物,那么一个淘宝用户可以对应多个购物订单,如图所示:
多的一方是Orders,持有一方的引用,也就是Users,而在Users中无需作任何定义,从订单到用户的关系是单向多对一关联。对应数据库就是:
还有比如说学生和班级的关系,多个学生可以属于同一个班级,这就是从学生到班级也是典型的单向多对一关系,看代码实现:
基于注解的多对一单向外键关联:
单向多对一关联中,多方需要持有一方的引用,那么多方(学生类)需要额外配置,需要对持有的一方引用使用注解@ManyToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGER),设置为级联操作和饥渴的抓取策略,@JoinColumn(name=“cid”),而一方(教室类)无需做任何多方的定义。
注意;多方必须保留一个不带参数的构造器!
importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;
//班级类,在多对一关系中属于一的方,不持有其他多余的配置,反而是被多方持有 @Entity public class ClassRoom { private intcid;//班级编号
private String cname;//班级名称
// 自动增长的主键 @Id @GeneratedValue publicintgetCid(){ returncid;}
public void setCid(intcid){ this.cid = cid;}
public String getCname(){ returncname;}
public void setCname(String cname){ this.cname = cname;} } View Code 一方——班级类无需做多余的定义,下面是多方——学生实体和配置:
importjavax.persistence.CascadeType;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;
//学生实体类,属于多对一的多方,持有班级(一方)的引用 @Entity public class Students { private intsid;//编号
private String sname;//姓名
private ClassRoom classroom;//学生班级
//注意:多方一定要显式的定义不带参数的构造方法 public Students(){ }
public Students(String sname){ this.sname = sname;} // 多方使用注解:@ManyToOne // fetch=FetchType.EAGER,急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。
// 全部级联操作,referencedColumnName显式设置数据库字段名cid,不写默认就是和name一样的。
@ManyToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)@JoinColumn(name=“cid”,referencedColumnName=“cid”)publicClassRoomgetClassroom(){ return classroom;}
public void setClassroom(ClassRoom classroom){ this.classroom = classroom;}
// 自动增长主键 @Id @GeneratedValue publicintgetSid(){ returnsid;}
public void setSid(intsid){ this.sid = sid;}
public String getSname(){ returnsname;}
public void setSname(String sname){ this.sname = sname;} } View Code 下面测试:先生成数据库脚本,再进行学生对象的插入
public class TestStudentsByAnno { private static SessionFactorysessionFactory;
@Before public void setUp()throws Exception { System.out.println(“setUp()...”);sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();}
@After public void tearDown()throws Exception { System.out.println(“tearDown()...”);sessionFactory.close();}
@Test public void testSave(){ Session session = sessionFactory.getCurrentSession();Transaction tx = session.beginTransaction();
try { ClassRoom c = new ClassRoom();c.setCname(“computer001”);
Students s = new Students(“zhangsan”);s.setClassroom(c);
session.save(s);tx.commit();} catch(Exception ex){ ex.printStackTrace();tx.rollback();} }
@Test @Ignore public void testSchemaExport(){ SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());se.create(true, true);} } View Code 反向创建表的数据库脚本如下:
create table ClassRoom(cid integer not null auto_increment, cnamevarchar(255), primary key(cid))create table Students(sid integer not null auto_increment, snamevarchar(255), cid integer, primary key(sid))
插入一个学生对象,会自动生成如下语句:
ClassRoom c = new ClassRoom();c.setCname(“computer001”);
Students s = new Students(“zhangsan”);s.setClassroom(c);
session.save(s);tx.commit();View Code Hibernate: insert into ClassRoom(cname)values(?)Hibernate: insert into Students(cid, sname)values(?, ?)插入成功:
基于xml配置实现多对一单向外键关联
View Code
一方(教室类)无需做任何多方的定义。只需要维护好自己的属性配置即可。而多方只需要加上
hibernate.cfg.xml里加上
多对一时候,多方设置EAGER加载,一对多的时候,一方设置LAZY加载 多对多关联,多方需要保留一个无参构造器。
第二篇:一对多通信报告
苏州科技大学电子信息与智能实验中心
JAVA高级程序设计 大作业
--一对多聊天程序设计
专业年级 班 级 学 号 姓 名 成 绩 任课教师
计算机科学与技术
2016年5月20日
一对多的聊天程序设计报告
1任务概述
编写一对多的聊天程序,程序由服务器和客户总原则两部分组成,服务器和客户端通过对象传送实现消息传递,两部分的交互方式如下:
(1)客户端发送命令:
(2)客户端发送命令:
(3)客户端发送命令:
(4)服务器端向指定客户端发送命令:
(5)客户端发送命令:
-1-
录,服务器如果允许注销,则返回消息:
请用以下方法之一实现:
(1)使用JAVA本身的序列化方法序列化命令对象;
(2)采用XML序列化命令对象;
(3)采用JSON序列化命令对象; 系统需求分析
(1)、该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。
客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。
服务器端程序:负责发送接收和发送给客户的信息
功能如下:
连接:当客户端运行起来时客户客户端就连上了服务器端,当然首先要运行服务器,然后再运行客户端。
(2)、在客户端具备提示选项、注册、登录、聊天、退出系统主要功能。
提示选项功能:
-2-
为了明确用户做什么功能的操作而设置的提示选项模块。注册系统功能需求:
如果选择的事注册模块,则完成用户的注册,如果注册成功,则 可以进入登录模块,系统并返回提示数据,注册失败也回返回响应的提示数据。
登陆系统功能需求:
如果选择的事登录模块,则用户进入登录功能,登录成功则向客户端返回登陆信息,同时在服务器端显示出来。建立与服务器的连接并登陆,能显示登陆错误信息。用户登陆成功,将保存其号码,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。
聊天管理功能需求:
如果选择的事聊天模块,则进入聊天功能。与好友聊天,实现一对一和多对多聊天;有信息提示,提示到来信息,转发给消息指定的用户。
退出功能需求:
如果选择的事退出模块或者是收到相应的退出消息,则聊天结束,服务器会发送响应的数据。
-3- 系统设计
我的思路是实现客户端与服务器端进行一对多的通信,这是一种最简单的聊天工具,也是对于一个初学者说是最容易理解的。但我们实际生活中的聊天模型不是这样的,例如:腾讯QQ聊天工具是把服务器作为一个中转站,一个客户端向服务器端发出请求申请连接,另一个客户端也向服务器端请求连接,一个客户端先把信息发送到服务器,然后服务器把信息转发给另一个客户端,如果把它做成和腾讯QQ差不多,那还是有一定难度的,那就必须要掌握多线程,其实多线程是一个难点。
我的思路如下:
实现客户端与服务器端的一对多通信,也就是客户端将对象发送给发送给服务器,服务器接收信息,然后服务器将回应对象发送给客户端,客户端接收,就这样你一句我一句。你要写这个简单的聊天工具首先你首先要起一个窗口,客户端一个服务器端一个,在建立客户端与服务器的链接,运用socket和serversocket来编程,然后再对象输入输出流把客户端的信息发送给服务器端。
我建立了如下类:
-4-
主要用到的知识如下: 1)线程
2)Java异常机制的处理
3)网络编程中的socket和serversocket 4)对象输入输出流 5)hashMap 系统实现
Command类:
public class Command implements Serializable{ private Date sendDate;
public Date getSendDate(){
return sendDate;} public void setSendDate(Date sendDate){
-5-
this.sendDate = sendDate;} Login类:
public class Login extends Command { private String name;public String getName(){
return name;} public void setName(String name){
this.name = name;} } Logout类:
public class Logout extends Command { private String name;
public String getName(){
return name;}
public void setName(String name){
this.name = name;}
} Message类:
public class Message extends Command { private String from;private String to;private String message;public String getFrom(){
return from;} public void setFrom(String from){
this.from = from;} public String getTo(){
return to;} public void setTo(String to){
this.to = to;} public String getMessage(){
return message;
-6-
} public void setMessage(String message){
this.message = message;} Register类:
public class Register extends Command{ private String name;
public String getName(){
return name;}
public void setName(String name){
this.name = name;} Result类:
public class Result extends Command{ private Command command;private String state;
public Result(Command command, String state){
super();
this.command = command;
this.state = state;} public Command getCommand(){
return command;} public void setCommand(Command command){
this.command = command;} public String getState(){
return state;} public void setState(String state){
this.state = state;} Client类:
public class Client { private static Command c;private static Result rs;public static void main(String[] args)throws Exception{
Socket socket = new Socket(”127.0.0.1“,8888);
-7-
OutputStream os=socket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
InputStream reader = socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(reader);
Scanner input= new Scanner(System.in);
boolean f=true;//循环判断
String name=null;//发送方姓名
String toName=null;//接收方姓名
int temp=0;//用于定位是否是已经在聊天了
int i=0;
int logout=0;//判断是否退出
System.out.println(”请选择:1.注册 2.登陆 3.发消息 4.退出:“);
while(f){
i=input.nextInt();
if(i==1){//注册
System.out.print(”我是:“);
name=input.next();
Register register=new Register();
register.setName(name);
register.setSendDate(new Date());
Result result = new Result(register, ”1“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服务器响应: command=“+rs.getCommand()+ ”state=“+rs.getState());
}else if(i==2){//登录
System.out.print(”我是:“);
// String name=”xu“;
name=input.next();
Login login=new Login();
login.setName(name);
// c.setSendDate(new Date());
Result result = new Result(login, ”2“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服务器响应: command=“+rs.getCommand()+ ”state=“+rs.getState());
}else if(i==3){//聊天中...-8-
System.out.print(”接受方姓名:“);
toName=input.next();
System.out.print(”我(“+name+”)说:“);
//name=input.next();
String message=input.next();;
Message message2=new Message();
message2.setFrom(name);
message2.setTo(toName);
message2.setMessage(message);
temp=1;
if(message.equals(”logout“)){//如果输入logou就代表退出聊天服务器
logout=1;
}else{
// c.setSendDate(new Date());
Result result = new Result(message2, ”3“);
oos.writeObject(result);
//读到消息
Message m=(Message)ois.readObject();
String str=”我对“+toName+ ”说:“+m.getMessage();
System.out.println(str);
FileInformation(str,”我“);
}
}
if(i==4||logout==1){//退出
Logout logout2=new Logout();
logout2.setName(name);
//c.setSendDate(new Date());
Result result = new Result(logout2, ”4“);
oos.writeObject(result);
rs=(Result)ois.readObject();
System.out.println(”服务器响应: command=“+rs.getCommand()+ ”state=“+rs.getState());
f=false;
}
}
//System.out.println(”欢迎再次光临!bye“);
ois.close();
oos.close();
socket.close();
-9-
} public static void FileInformation(String texts,String name){//显示收到的文本
JFrame showInfo=new JFrame();
JPanel jp=new JPanel();
JTextArea text=new JTextArea(20,20);//文本区
text.append(texts+”n“);//输入
jp.add(text);
showInfo.add(jp);
showInfo.setTitle(name+”回答!“);
showInfo.setVisible(true);
showInfo.setSize(300,200);
showInfo.setLocation(500, 500);
showInfo.setDefaultCloseOperation(1);} }
SocketHandler类:
public class SocketHandler implements Runnable { private Socket socket;private Result rs;private String name;ObjectOutputStream oos;Scanner input=new Scanner(System.in);public SocketHandler(Socket socket){
this.socket = socket;
} @SuppressWarnings(”unchecked“)public void run(){
try {
InputStream reader=socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(reader);
OutputStream os=socket.getOutputStream();
oos=new ObjectOutputStream(os);
String client = ”<“ + socket.getInetAddress().toString()+ ” : “ + socket.getPort()+ ”>“;
boolean f=true;
while(f){
rs=(Result)ois.readObject();
if(rs.getState().equals(”1“))//
-10-
{
name=((Register)(rs.getCommand())).getName();
Server.users.put(name, oos);//存储写入图中
if(name.equals(”“)){
Register register=new Register();
rs.setCommand(register);
rs.setState(”fail“);
oos.writeObject(rs);
}else{
Register register=new Register();
rs.setCommand(register);
rs.setState(”ok“);
oos.writeObject(rs);
}
}else if(rs.getState().equals(”2“))//
{
name=((Login)(rs.getCommand())).getName();
Server.users.put(name, oos);//存储写入图
if(name.equals(”“)){
Login login=new Login();
rs.setCommand(login);
rs.setState(”fail“);
oos.writeObject(rs);
}else{
Login login=new Login();
rs.setCommand(login);
rs.setState(”ok“);
oos.writeObject(rs);
}
}
else if(rs.getState().equals(”3“))//用于转发 信息message from=”xu“ to=”zhang“ message=”ddd“ />
{
//int count=0;//计数器
String toName=((Message)(rs.getCommand())).getTo();//得到收件人的名字
String message=((Message)(rs.getCommand())).getMessage();//得到发送的信息
Message message2=new Message();
message2.setTo(toName);
message2.setMessage(message);
-11-
oos.writeObject(message2);
oos = Server.users.get(toName);
if(oos!=null){
oos.writeObject(message2);//向另一客户端写入信息
oos.flush();
}else{
oos.writeBytes(”对不起!没有此用户!请检查......“);
}
} else if(rs.getState().equals(”4“))//退出登录//
{
name=((Logout)(rs.getCommand())).getName();
Server.users.remove(name);//删除用户名
rs.setState(”logout“);
oos.writeObject(rs);
break;
}else{
oos.writeBytes(”输入有误!请重新输入“);
}
oos.flush();
}
oos.close();
ois.close();
socket.close();
} catch(Exception e){
e.printStackTrace();
}
} public static void FileInformation(String texts){//显示收到的文本
JFrame showInfo=new JFrame();
JPanel jp=new JPanel();
JTextArea text=new JTextArea(20,20);//文本区
text.append(texts+”n“);//输入
jp.add(text);
showInfo.add(jp);
showInfo.setTitle(”服务端相应!“);
showInfo.setVisible(true);
showInfo.setSize(300,200);
showInfo.setLocation(500, 500);
showInfo.setDefaultCloseOperation(1);
-12-
} } Server类:
public class Server { public static HashMap
ServerSocket server = new ServerSocket(8888);
while(true){
System.out.println(”正在等待。。");
Socket socket = server.accept();
SocketHandler handler = new SocketHandler(socket);
Thread thread = new Thread(handler);
thread.start();
} } } 系统测试
-13-
6总结
通过本次聊天的设计,我对网络编程有了更深入的理解与认识。了解了socket编程技术,对于TCP协议有了更深入的理解。我明白了对网络通讯程序的设计的原理和过程的透彻理解,是网络通讯程序的前提。
我在代码编写的时候,使用了集成开发工具eclipse,所以编程的效率相对较高。这个聊天程序只是实现了基本的功能,而且并没有提供较为友好的图形界面。
通常,网络应用程序包含两个独立的应用程序:客户程序和服务器程序。但是,也可以设计同时完成这两种功能的程序,例如,一些服务器程序如果不能完成一个服务请求时,它将转而充当客户程序,向其它服务器程序请求信息。
通过这次的设计,我明白了很多。我知道自己在实践动手能力方面还有很大欠缺,做出能够聊天的程序增加了我对网络编程的兴趣。我也认识到了自己在编程方面的很多不足,对整个协议栈的了解还不太清晰,以后得总结一下这方面的知识。我会更加努力,平时注重提 -14-
高自己的实践动手能力,争取更大的进步。参考文献
[1] 李钟尉,陈丹丹.java项目开发案例全程实录(第2版)2011.[2] 刘长炯.MyEclipse6 Java开发中文教程[M].北京:电子工业出版社 2007.[3] 李钟蔚.JAVA开发实战宝典[M].北京:清华大学出版社 2009 [4] 冯建华,周立柱,郝晓龙.数据库系统设计与原理.[M].北京:清华大学出版社 2007 [5] 张海藩.软件工程导论(第5版).[M].北京:清华大学出版社 2007 [6] 印雯.Java语言与面向对象程序设计[M].北京:清华大学出版 2000.[7] Swing ,David M.Geary.Java2图形设计[M].北京:机械工业出版社 2000.[8] 霍顿.Java2入门经典(JDK5)[M].北京: 机械工业出版社 2006.-15-
第三篇:“一对一、一对多”结对帮扶机制
哈巴格希街道办事处贫困大学生 “一对一、一对多”结对帮扶长效机制
为了发展壮大街道办事处“贫困大学生、贫困党员”救助基金,更多的解决和救助辖区贫困大学生解决就学难问题,帮助他们完成学业,特制定贫困大学生“一对一、一对多”结对帮扶长效机制。
“一对一、一对多”帮扶方案就是联系辖区慈善机构、企业和成功人士与贫困大学生进行结对帮扶,根据帮扶者意愿一家慈善机构、企业、成功人士长期帮扶一位或是多位贫困大学生,帮扶期限为应届贫困大学生入学至学业完成为止,为贫困学生的生活、实习、就业等提供多方面的帮助,结对双方要长期联系,被帮扶学生定期向结对慈善机构、企业或是结对的成功人士反馈自己的学习及生活状况。具体实施措施如下:
第一,广泛宣传,大力倡导。根据街道办事处的统一部署,制定和出台帮扶结对实施方案,积极联系辖区内热心慈善事业、有社会影响力的企业家、外出创业成功人士,通过他们的示范和带动,不断增强慈善事业的感染力和凝聚力,使更多的企业和成功人士能参与到此次结对帮扶活动中来,伸出援助之手救助更多的贫困大学生完成学业。
第二,建立健全结对企业与帮扶大学生的基础信息台账。走访联系辖区企业,建立结对企业与辖区2011年贫困应届大学生的基础信息台账。结对帮扶台账的建立有利于街道更好的了解和掌握贫困大学生信息,便于结对企业对所帮扶学生以后的就学、生活、就业提供更多的帮助,加强了帮扶学生与结对企业的沟通与联系。
第三,规范贫困大学生救助申请程序,通过申请、审批、审核三道程序严把审批关。救助大学生首先要领取和填写《哈巴格希街道办事处贫困大学生救助申请表》、然后将申请表提交村民委员会核实盖章,再由村民委员提交办事处进行审批,办事处相关人员通过走访入户、核查无误最后确定为救助对象。
第四,加强结对慈善机构、企业、成功人士与帮扶大学生的长期联系,所帮扶大学生定期以书信、电话、E—mail等方式向结对企业、慈善机构、成功人士反馈自己的学习成绩、生活状况等信息,加强交流。寒暑期,有打工或是对口专业实习意愿的大学生可以主动联系结对帮扶企业、慈善机构、成功人士,结对企业再有条件的情况下,向帮扶大学生提供打工实习信息和岗位。
第五,精心组织,加强监管,正确引导。办事处将要对贫困大学生救助名单、结对帮扶企业进行及时张榜公布,每位救助贫困学生以及每项救助支出都将接受社会的监督,严格审批手续,确保每一分捐赠款都用在辖区贫困学生的社会救助上。
贫困大学生“一对一、一对多”结对帮扶长效机制的建立,有利于哈巴格希街道办事处“贫困大学生、贫困党员”救助基金的发展壮大,解决了只为贫困学生救助一部分学费而今后生活依然困难的弊端,更为贫困学生毕业以后的就业提供了一定的帮助。
附:
1、哈巴格希街道办事处贫困大学生申请救助表
2、结对企业与帮扶贫困大学生基础信息台账 注:此方案最终解释权归哈巴格希街道办事处社会事务办公室所有。
社会事务办公室 二〇一一年六月八日
第四篇:关联交易回避管理制度
8.7.5 关联交易回避管理制度
下面是某企业针对关联交易制定的关联交易回避管理制度,供读者参考。
关联交易回避管理制度
第1条 为了规范企业的关联交易,减少关联交易中的风险,特制定本制度。
第2条 本制度中的关联方是指一方控制、共同控制另一方或对另一方施加重大影响,以及两方或两方以上同受一方控制、共同控制或重大影响。
第3条 本制度中的关联交易是指本企业或控股子公司与关联方之间发生的转移资源、劳务或义务的行为,而不论是否收取价款。具体主要包括但不限于下列17项交易。
1.购买或出售资产。
2.对外投资(含委托理财、委托贷款等)。3.提供财务资助。
4.提供担保(反担保除外)。5.租入或租出资产。
6.签订管理方面的合同(含委托经营、受托经营等)。7.赠于或受赠资产。8.债权或债务重组。9.研究与开发项目的转移。10.签订许可协议。
11.购买原材料、燃料、动力。12.销售产品、商品。13.提供或接受劳务。14.委托或受托销售。15.与关联人共同投资。
16.其他通过约定可能造成资源或义务转移的事项。17.法律法规认定的属于关联交易的其他事项。
第4条 董事会审议关联交易时,关联董事需回避审议,也不得代替其他董事进行表决。第5条 有下列情形之一者,视为关联董事。1.交易对方。
2.在交易对方或能控制该交易对方的企业任职的。3.拥有交易对方直接或间接控制权的。
4.与交易对方及其控制人关系密切的家庭成员。
5.与交易对方及其控股股东的董事、监事和高级管理人员关系密切的家庭成员。6.由主管机构认定的其他原因使企业的审议结果受到其影响的人员。
第6条 董事会因关联董事的回避无法形成决议时,需将关联交易提交股东大会审议。第7条 股东大会审议关联交易时,关联股东需回避审议。第8条 有下列情形之一者,视为关联股东。1.交易对方。
2.被交易对方直接或间接控制的。3.拥有交易对方直接或间接控制权的。
4.与交易对方受同一法人或自然人直接或间接控制的。
5.与交易对方或其关联人存在尚未履行完毕的股权转让协议或其他协议导致其表决权受到限制或影响的。
6.主管机构认定的可能造成企业对其利益倾斜的法人或自然人。
第9条 企业中与交易对象有关联的员工在签署关联交易合同时,只能代表一方签署。第10条 本制度由总裁办公室制定,解释权、修改权归属总裁办公室。第11条 本制度自总裁审批之日起实施,修改时亦同。
第五篇:校园招聘一对多自我介绍示范
校园招聘一对多自我介绍示范
求职背景
面试地点: 华南理工大学,中海石油校园招聘会现场
目标职位: 商务代表
面试类型: 几十名同学持简历逐一入场,面向三位面试官做一个2~3分钟的自我介绍。
申请人概况: 自称“太普通”的一个华工女生,从未得过奖学金,也未曾在社团中担任要职。
自我介绍原文
大家好,我叫张一凡,首先我想衷心感谢各位领导冒着大雨从深圳赶到华工,给我们一次宝贵的面试机会。面试机会对于我们应届毕业生来说,绝对就像今天的天气,春雨贵如油; 或者说,贵如石油!(点评: 在自我介绍之前,利用当天的天气表示对招聘单位的感激之情,是非常高明的一个互动环节。)
我来自辽宁省锦州市,我的母亲也是一位石油工作者,她在锦州炼油六厂工作。由于我的父亲多年以前就下岗了,我家的生活和我的教育全部依赖母亲每个月两千多块钱的收入。所以,我对石油行业充满了感恩之情,没有她,我的大学教育很可能会缺失。(点评: 通过“母亲的工作”把自己和用人单位巧妙地结合起来,又是一个高明的互动。由此可以看出,成功的自我介绍绝对不仅仅是介绍“自我”,而是时时刻刻把“自我”和“对方”结合起来。)
在华工,我所学的专业是工商管理,和刚才做自我介绍的张优和李秀同学相比,我非常遗憾地说,自己的学习成绩只是中等水平,原因主要有两方面,一是华工的确人才济济,二是我本人把相当一部分精力投入到了兼职工作中,因为我确实需要兼职的收入。我累计担任了八名中小学生的数学与英语家教,参加了二十多次校园促销,比如雅芳化妆品促销、卡西欧电子字典促销等等。销售工作锻炼了我的勇气和耐力,我相信这两种素质将会对我未来的工作很有帮助!(点评: 第二部分,和其他同学相比,她的成绩中等甚至是下等是块硬伤,如果不自己把这块硬伤揭开,面试官会觉得如鲠在喉。主动暴露自己的弱点,则表现出一凡的勇敢与诚实,也巧妙地使面试官把注意力转移到她的兼职经验上,化弱势为优势!)
今天我来申请中海石油的“商务代表”一职,说实话,除了张经理刚刚介绍过的工作内容之外,我并不十分清楚具体的工作要求是什么。在此,我谨浅显地谈谈我个人的理解,我想,这个职位需要这样一个人: 第一,她要了解并热爱石油行业; 第二,她要形象端正,表达能力强,思维严谨; 第三,作为应届毕业生,她必须具备良好的学习心态和踏踏实实的工作态度。对于这三点,我自信自己能够满足,我希望自己能够有机会进入下一轮面试,届时再详细地向您阐述。最后,再次表示我的感谢!(鞠躬)(点评: 大学生对于就业岗位往往一知半解,如果不懂装懂反而引人反感。实话实说,为自己又赢一分!不过大家绝对不要盲目抄袭此答案,说自己不了解所申请的职位是相当危险的招数,用不好等于引火烧身。一凡并非真正不了解这个职位,一来她说自己上网做过调查,二来她的理解基本正确,她用的是以退为进的方法。)