您的位置:首页 > 其它

如何使用hibernate实现多表关联

2013-02-21 18:26 190 查看
HibernateUtil.java

获得连结

<----------------------------------------------------->

import net.sf.hibernate.*;

import
net.sf.hibernate.cfg.*;

import
org.apache.log4j.Logger;

public class
HibernateUtil {

private static
Logger log
= Logger.getLogger(HibernateUtil.class);

private static
final SessionFactory
sessionFactory;

static{

try{

//Create the
SessionFactory

sessionFactory =
new
Configuration().configure().buildSessionFactory();

}catch(Throwable ex){

ex.printStackTrace();

log.error("Initial
SessionFactory creation
failed.",ex);

throw new
ExceptionInInitializerError(ex);

}

}

public static
final ThreadLocal
session =
new ThreadLocal();

public static
Session currentSession()
throws HibernateException{

Session s
= (Session) session.get();

//Open a
new Session,if this
Thread has
none yet

if(s ==
null){

s =
sessionFactory.openSession();

session.set(s);

}

return s;

}

public static
void closeSession()
throws HibernateException{

Session s
= (Session) session.get();

session.set(null);

if(s !=
null)

s.close();

}

}

<------------------------------------------------------->

Page.java

分页

<--------------------------------->

mport net.sf.hibernate.*;

import java.util.List;

import java.util.Collection;

import java.util.ArrayList;

public class
Page {

public List
Total_List;

public Collection
Result_coll;

public int
Row_Num;

public int
Page_Num;

private int
pageSize;

//initailzation

public Page(Query
query, int
pageSize) {

this.pageSize =
pageSize;

this.Result_coll =
new ArrayList();

try {

this.Total_List =
query.list();

this.Row_Num =
this.Total_List.size();

this.Page_Num =
(this.Row_Num %
this.pageSize
> 0) ?
(this.Row_Num/ this.pageSize
+ 1) :
(this.Row_Num /
this.pageSize);

} catch
(Exception e) {

System.err.println("Page.class
initialization failed");

}

}

public Collection
ChangePage(int page)
{

int BigenNum
= page *
this.pageSize;

int EndNum
= (page +
1) * this.pageSize
- 1;

for (int i
= BigenNum;
i <=
EndNum; i++)
{

this.Result_coll.add(this.Total_List.get(i));

}

return this.Result_coll;

}

//返回 结果总数

public int
getTotalNum(){

return this.Row_Num;

}

//返回 总页数

public int
getPageNum(){

return this.Page_Num;

}

}

<------------------------------------------------------>

test.java

测试

<------------------------------------------------------>

import net.sf.hibernate.*;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.Collection;

import java.util.List;

public class
test {

public static
void main(String[]
args) {

try{

Session session
=
HibernateUtil.currentSession();

StockIn Si
= new StockIn();

OrgInfo Oi
= new OrgInfo();

MainYjsj MY
= new
MainYjsj();

Object[] ob
= null;

net.sf.hibernate.Query query
= session.createQuery("from
OrgInfo as
a,StockIn as b
where b.OrgId=
a.OrgId and
b.OrgId
like '001%' and
b.InDate>='2005-1-8'
and
b.InDate<='2005-7-8'");

Page p =
new Page(query,10);
//参数2为页面显示记录行数

System.out.println("Row Total
:" +
p.getTotalNum());

System.out.println("Page
Total :" +
p.getPageNum());

Collection pp
= new
ArrayList();

pp =
p.ChangePage(1); //参数为要显示的页数

Iterator si_iter
= pp.iterator();

while(si_iter.hasNext()){

Si =
(StockIn)si_iter.next();

System.out.println(Si.getCode());

MY =
(MainYjsj)si_iter.next();

System.out.println(MY.getSpflmc());

}

HibernateUtil.closeSession();

}

catch(Exception e){

e.printStackTrace();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: