如何使用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();
}
}
}
获得连结
<----------------------------------------------------->
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();
}
}
}
相关文章推荐
- hibernate之关于使用连接表实现多对一关联映射
- 使用Hibernate criteria进行分页查询时,如何实现一次查询取得总记录数和分页后结果集
- Hibernate使用sql语句实现多表关联查询
- Hibernate使用sql语句实现多表关联查询
- 使用myeclipse自动导入hibernate3的jar包,如何关联hibernate源码的解决办法
- hibernate之关于使用连接表实现多对一关联映射
- 如何实现框架窗口间的关联及超链接的target属性的使用
- 如何使用Hibernate实现一个学生注册功能
- Hibernate多对多的关联映射(如何配置,代码实现)
- hibernate之关于使用连接表实现一对多关联映射
- hibernate之关于使用连接表实现一对多关联映射
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
- hibernate之关于使用连接表实现多对一关联映射
- hibernate使用注解实现多对多关联映射
- Hibernate使用sql语句实现多表关联查询
- 如何使用PB实现动态报表?
- Hibernate整合Spring后,如何使用SchemaExport生成数据库表
- 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现
- Apache Commons Logging 是如何决定使用哪个日志实现类的
- (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)