其他类只要实现借口就可以进行增删改查等操作。
IGenericDao.java
package com.sysmaster.dao;
import java.io.Serializable;
import java.util.List;
public interface IGenericDAO<Obj,Id extends Serializable>{
public boolean addObj(Obj obj);
public boolean uptObj(Obj obj);
public boolean delObj(Obj obj);
public Obj getObj(Id id);
public List<Obj> getObjs(String hql);
}
GenericDaoImpl.java
package com.sysmaster.dao.impl;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import com.sysmaster.dao.IGenericDAO;
@Repository
public abstract class GenericDAOImpl<Obj,Id extends Serializable> implements IGenericDAO<Obj,Id>{
//定义SessionFactory
@Resource
private SessionFactory sessionFactory;
private Class<Obj> clzz;
@SuppressWarnings("unchecked")
public GenericDAOImpl(){
clzz=(Class<Obj>)((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public boolean addObj(Obj obj) {
boolean flag = false;
try{
// Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession(); <span style="color: rgb(50, 62, 50); font-family: simsun; font-size: 14px; line-height: 21px; background-color: rgb(204, 232, 207);">// 打开Sessio</span><span style="color: rgb(50, 62, 50); font-family: simsun; font-size: 14px; line-height: 21px; background-color: rgb(204, 232, 207);">n</span>
// session.beginTransaction();
session.persist(obj);//<span style="color: rgb(51, 51, 51); font-family: arial, 'courier new', courier, 宋体, monospace; font-size: 14px; line-height: 24px; white-space: pre-wrap;">persist是插入</span>
// session.getTransaction().commit();
// session.close();
flag = true;
}
catch(Exception e)
{
e.printStackTrace();
}
return flag;
}
public boolean uptObj(Obj obj) {
boolean flag = false;
try{
Session session = sessionFactory.getCurrentSession();
// Session session = sessionFactory.openSession();
// session.beginTransaction();
session.update(obj);
// session.getTransaction().commit();
// session.close();
flag = true;
}
catch(Exception e)
{
e.printStackTrace();
}
return flag;
}
public boolean delObj(Obj obj) {
boolean flag = false;
try{
// Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession();
// session.beginTransaction();
session.delete(obj);
// session.getTransaction().commit();
// session.close();
flag = true;
}
catch(Exception e)
{
e.printStackTrace();
}
return flag;
}
@SuppressWarnings("unchecked")
public Obj getObj(Id id) {
Obj obj = null;
try{
// Session session = sessionFactory.openSession();
Session session = sessionFactory.getCurrentSession();
// session.beginTransaction();
obj = (Obj)session.get(clzz, id);
// session.getTransaction().commit();
// session.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return obj;
}
@SuppressWarnings("unchecked")
public List<Obj> getObjs(String hql) {
List<Obj> objList = null;
try{
Session session = sessionFactory.getCurrentSession();
// session.beginTransaction();
Query query = session.createQuery(hql);
objList = query.list();
// session.getTransaction().commit();
}
catch(Exception e)
{
e.printStackTrace();
}
return objList;
}
}
People实现上面的接口
IPeopleDao.java
package com.sysmaster.dao;
import com.sysmaster.po.People;
public interface IPeopleDAO extends IGenericDAO<People,Integer>{
}
PeopleDaoImpl.java
package com.sysmaster.dao.impl;
import com.sysmaster.dao.IPeopleDAO;
import com.sysmaster.po.People;
public class PeopleDAOImpl extends GenericDAOImpl<People,Integer> implements IPeopleDAO {
}