在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;
}