浪迹天涯
web报表设计器....
posts - 61,comments - 71,trackbacks - 0


针对上面的角色人员表如何用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"?>
<!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 Persistence Tools
-->
<hibernate-mapping>
    
<class name="com.insigma.hr.eduj.jsry.model.Jsry" table="jsry" catalog="hr">
        
<composite-id name="id" class="com.insigma.hr.eduj.jsry.model.JsryId">
            
<key-many-to-one name="jsgl" class="com.insigma.hr.eduj.jsgl.model.Jsgl">
                
<column name="JSBH" />
            
</key-many-to-one>
            
<key-many-to-one name="ygxx" class="com.insigma.hr.eduj.ygxx.model.Ygxx">
                
<column name="YGBH" length="20" />
            
</key-many-to-one>
        
</composite-id>
    
</class>
</hibernate-mapping>
   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);
 }





posted on 2012-09-21 17:19 JJCEA 阅读(1621) 评论(0)  编辑  收藏 所属分类: java日记hibernate

只有注册用户登录后才能发表评论。


网站导航: