hibernate主要测试方法

来源:互联网 发布:程序员工作心得体会 编辑:程序博客网 时间:2024/06/05 06:30

在DAO包中写一个类叫ProductDao用于放以下方法,不加主方法,,一个叫ProductDaoImpl的接口,写以下方法的调用,一个工厂类用于整合接口和实现类


--------------------------------------

package DAO;
public class DaoFactory {
public static ProductDaoImpl getDaoInstance()
{
return new ProductDaoImpl();
}
}-

----------------------------------------------------

public interface ProductDao {
public  product querybyid(int id);

public ttype query();

public List querypro();
public  List sortbytype();
public  void countbytype();
public List<product> findproduct(String keyword);

public void addproduct(product p);
public  void updateproduct(String a,int b,String c,int d);
public  List<Object[]> findInfo();
}


----------------------------------------

package DAO;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import PO.product;
import PO.ttype;
import Util.factory;
public class ProductDaoImpl implements ProductDao {


@Override
public product querybyid(int id) {
Session session=factory.getSession();
    Transaction tx=session.beginTransaction();
    String hql="from product where pno=?";
    Query query=session.createQuery(hql);
    query.setParameter(0, id);
    product p=(product)query.uniqueResult();
    
    tx.commit();
    session.close();
    return p;
}


@Override
public ttype query() {
// TODO Auto-generated method stub
return null;
}


@Override
public List querypro() {
product pro=new product();
Session session=factory.getSession();
String hql="from product";
Query query=session.createQuery(hql);
return query.list();

}


@Override
public List sortbytype() {

Session session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="select count(*),p.tno from product p group by p.tno";
Query query=session.createQuery(hql);
List<Object> list=query.list();
tx.commit();
session.close();
return list;
}


@Override
public void countbytype() {
Session session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="select count(*) from product   group by tno";
Query query=session.createQuery(hql);
List<Object> list=query.list();
  for(Object obj:list)
  {
  System.out.println(obj);
  }

tx.commit();
session.close();

}


@Override
public List<product> findproduct(String keyword) {
Session session=null;
List<product> list=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="from product p where p.pdescri like ? or p.pname like ?";
Query query=session.createQuery(hql);
query.setParameter(0, "%"+keyword+"%");
query.setParameter(1, "%"+keyword+"%");
list=query.list();
tx.commit();
session.close();
return list;
}


@Override
public void addproduct(product p) {


Session session=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();

   session.save(p);

tx.commit();
session.close();
}


@Override
public void updateproduct(String a, int b, String c, int d) {


Session session=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="update product set pname=?,tno=?,pdescri=? where pno=?";
Query query=session.createQuery(hql);
query.setParameter(0,a );
query.setParameter(1,b );
query.setParameter(2,c );
query.setParameter(3,d );
query.executeUpdate();

tx.commit();
session.close();
}


@Override
public List<Object[]> findInfo() {


  List<Object[]> list=null;
  Session session=factory.getSession();
  Transaction tx=session.beginTransaction();
  String hql="select p.pno,p.pname,p.pdescri,t.ttno,t.tname from product p join p.ttype t";
  Query query=session.createQuery(hql);
  list=query.list();
  tx.commit();
  
  return list;
}


}

---------------------------------------------------------------

以下方法为最初的测试方法,上面的是成品

package test;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import PO.product;
import PO.ttype;
import Util.factory;
public class testinfo {
public static void main(String[] args) {


//内联查询
List<Object[]> list=findInfo();
for(Object[] obj:list)
{
System.out.println(obj[0]+"---"+obj[1]+"----"+obj[2]+"---"+obj[3]+"---"+obj[4]);
}


/*//添加product
product pt=new product();
pt.setPno(1005);
pt.setPname("bangbing");
pt.setPdescri("yummy!");
ttype t=new ttype();
t.setTname("eat");
pt.setTtype(t);
addproduct(pt);
*/

//更改product
updateproduct("bangbing",2,"yummy!",1005);
/*//查询type
          ttype t=query();
System.out.println(t.getTname());
*/
//查询product 中
/* List<product> s=querypro();
System.out.println();
for(product p:s)
{
System.out.println(p.getPdescri()+"------------"+p.getTtype().getTname());
}*/

/* //分组查询
List<Object[]> list=sortbytype();
for(Object[] obj:list){
System.out.println(obj[0]);
}*/
/*
 *    //按类别查询数目
countbytype();*/
/*
//按pid查product
product pr=querybyid(1001);
System.out.println(pr.getPno()+"----------"+pr.getPname()+"------"+pr.getPdescri());
*/
/*//关键字查询
List<product> list=findproduct("can");
for(product p:list)
{
System.out.println(p.getPname());
}*/
}


public static product querybyid(int id)
{
   
    Session session=factory.getSession();
    Transaction tx=session.beginTransaction();
    String hql="from product where pno=?";
    Query query=session.createQuery(hql);
    query.setParameter(0, id);
    product p=(product)query.uniqueResult();
    
    tx.commit();
    session.close();
    return p;
}
public static ttype query()
{
ttype t=new ttype();
Session session=factory.getSession();
t=(ttype) session.get(ttype.class, new Integer("1"));

return t;
}


public static List querypro(){
product pro=new product();
Session session=factory.getSession();
String hql="from product";
Query query=session.createQuery(hql);
return query.list();

}
public static List sortbytype()
{

Session session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="select count(*),p.tno from product p group by p.tno";
Query query=session.createQuery(hql);
List<Object> list=query.list();
tx.commit();
session.close();
return list;
}

public static void countbytype()
{
Session session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="select count(*) from product   group by tno";
Query query=session.createQuery(hql);
List<Object> list=query.list();
  for(Object obj:list)
  {
  System.out.println(obj);
  }

tx.commit();
session.close();


}

public static List<product> findproduct(String keyword)
{
Session session=null;
List<product> list=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="from product p where p.pdescri like ? or p.pname like ?";
Query query=session.createQuery(hql);
query.setParameter(0, "%"+keyword+"%");
query.setParameter(1, "%"+keyword+"%");
list=query.list();
tx.commit();
session.close();
return list;

}

public static void addproduct(product p)
{
Session session=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();

   session.save(p);

tx.commit();
session.close();
}

public static void updateproduct(String a,int b,String c,int d)
{
Session session=null;
session=factory.getSession();
Transaction tx=session.beginTransaction();
String hql="update product set pname=?,tno=?,pdescri=? where pno=?";
Query query=session.createQuery(hql);
query.setParameter(0,a );
query.setParameter(1,b );
query.setParameter(2,c );
query.setParameter(3,d );
query.executeUpdate();

tx.commit();
session.close();
}

//内联查询join

public static List<Object[]> findInfo()
{
  List<Object[]> list=null;
  Session session=factory.getSession();
  Transaction tx=session.beginTransaction();
  String hql="select p.pno,p.pname,p.pdescri,t.ttno,t.tname from product p join p.ttype t";
  Query query=session.createQuery(hql);
  list=query.list();
  tx.commit();
  
  return list;
}

}
原创粉丝点击