针对上面的角色人员表如何用hibernate实现映射关系呢,因为此表中的两个字段是其它两表中主键,在本表中即使是主键又是外键,下面说明一下操作这张表。
第一步:首先生成员工信息表和角色管理表的javaBean和.hbm.xml文件,这个是单表,这里不多讲;
com.insigma.hr.eduj.ygxx.model.Ygxx.java,
com.insigma.hr.eduj.ygxx.model.Ygxx.hbm.xml
com.insigma.hr.eduj.jsgl.model.Jsgl.java,
com.insigma.hr.eduj.jsgl.model.Jsgl.hbm.xml
保证员工信息表和角色管理表能正常操作数据库(增,修,删,查);
第二步:生成角色人员表对应的映射文件如下:
1).Jsry.hbm.xml文件内容如下:
< xml version="1.0" encoding="utf-8" >
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
2).JsryId.java这个javabean中存放了两个属性分别对应员工信息和角色管理表的javabean对象,内容如下:
public class JsryId implements java.io.Serializable {
private Jsgl jsgl;
private Ygxx ygxx;
public Jsgl getJsgl() {
return jsgl;
}
public void setJsgl(Jsgl jsgl) {
this.jsgl = jsgl;
}
public Ygxx getYgxx() {
return ygxx;
}
public void setYgxx(Ygxx ygxx) {
this.ygxx = ygxx;
}
}
3).Jsry.java这个javabean中只有一个属性,就是我们上面刚才新建的JsryId这个类对象;内容如下:
public class Jsry implements java.io.Serializable {
// Constructors
private JsryId id;
/** default constructor */
public Jsry() {
}
/** full constructor */
public Jsry(JsryId id) {
this.id = id;
}
public JsryId getId() {
return id;
}
public void setId(JsryId id) {
this.id = id;
}
}
第三步:dao中方法如下:
public void save(Jsry jsry) {
log.debug("saving Jsry instance");
try {
getHibernateTemplate().saveOrUpdate(jsry);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void delete(Jsry jsry) {
log.debug("deleting Jsry instance");
try {
getHibernateTemplate().delete(jsry);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
public Jsry findById(com.insigma.hr.eduj.jsry.model.JsryId id) {
log.debug("getting Jsry instance with id: " + id);
try {
Jsry instance = (Jsry) getHibernateTemplate().get(
"com.insigma.hr.eduj.jsry.model.Jsry", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List getJsgllist(String sql) {
String sqls = "select t.* from Jsgl t where 1=1 " + sql;
SQLQuery query = getHibernateTemplate().getSessionFactory()
.getCurrentSession().createSQLQuery(sqls);
query.addEntity("t", Jsry.class);
List topList = query.list();
return topList;
}
第四步:测试
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext appContext = new FileSystemXmlApplicationContext("/src/applicationContext.xml");
JsryService jsryService=(JsryService) appContext.getBean("jsryService");
Jsry jsry = new Jsry();
JsryId id = new JsryId();
Jsgl jsgl = new Jsgl();
jsgl.setJsbh(1);
Ygxx ygxx = new Ygxx();
ygxx.setYgbh("1");
id.setYgxx(ygxx);
id.setJsgl(jsgl);
jsry.setId(id);
jsryService.save(jsry);
}