📄 basedao.java
字号:
package com.qrsx.qrsxcrm.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.MatchMode;
/**
* 泛型,实现了通用方法
* @author Administrator
*/
public class BaseDAO<T> {
protected Session session = null;
protected Transaction tx = null;
protected int pageNum=5; //每页显示的数据条数pageSize
private Class<T> persistentClass; //要得到当前泛型的类
public BaseDAO(Class<T> class1) {
this.session = HibernateUtil.getSession();
this.persistentClass = class1;
}
public Class<T> getPersistentClass() {
return persistentClass;
}
public void setPersistentClass(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
// create
public void create(T t) {
session.save(t);
}
// update
public void update(T t) {
session.update(t);
}
// delete
public void delete(T t) {
session.delete(t);
}
/**
* 批量删除
*/
@SuppressWarnings("unchecked")
public void batchDelete( Class< T > clazz , String[] ids)
{
T object = null;
for( int i = 0; i < ids.length; i++ )
{
object = ( T )session.get( clazz , ids[i] );
session.delete( object );
}
}
// findById
@SuppressWarnings("unchecked")
public T findById(Class c, String id) {
T t = (T) session.get(c, id);
return t;
}
//findAll
@SuppressWarnings("unchecked")
public List<T> findAll(String hql){
Query query=session.createQuery(hql);
List<T> list=query.list();
return list;
}
// list 动态查询
@SuppressWarnings("unchecked")
public List list(T t) {
// QBC查询
Example example = Example.create(t);
example.ignoreCase().enableLike(MatchMode.ANYWHERE);//对查询对象进行忽略大小写的模糊查询,适用于动态查询
Criteria criteria = session.createCriteria(this.getPersistentClass()).add(example);
List <T> list=criteria.list();
return list;
}
/**
* 带分页的检索方法
* @param t
* @param i 页码
* @return
*/
@SuppressWarnings("unchecked")
public List listForPage(Class<T> t,int i){
Criteria criteria1 = session.createCriteria(t);
int total= criteria1.list().size(); //total 为记录总数
int allPage ; //总页数
Criteria criteria = session.createCriteria(t);
criteria.setFirstResult(i);
criteria.setMaxResults(pageNum);
//总页数
if(total %pageNum==0){
allPage = total/pageNum;
}else{
allPage = total/pageNum +1 ;
}
List<T> list = criteria.list();
list.add((T) (Integer)total); //将总记录数存入list
list.add((T) (Integer)allPage); //将总页数存入list
return list;
}
/**
* 根据提交的对象属性查询数据(分页)
* @param t
* @param i 数据的起始位置
* @return
*/
@SuppressWarnings("unchecked")
public List listForEntity(Class<T> t,int i){
//QBC查询
Example example=Example.create(t);
example.ignoreCase().enableLike(MatchMode.ANYWHERE);
Criteria criteria1 =session.createCriteria(this.getPersistentClass()).add(example);
int total=criteria1.list().size();//总数据数
int allPage=0;//总页数
Criteria criteria =session.createCriteria(this.getPersistentClass()).add(example);
criteria.setFirstResult(i);
criteria.setMaxResults(pageNum);
//计算总页数
if(total%pageNum==0){
allPage = total/pageNum;
}else{
allPage=total/pageNum+1;
}
List<T> list=criteria.list();
list.add((T)(Integer)total);//在list中加入总数据量
list.add((T)(Integer)allPage);//在list中加入总页数
return list;
}
/**
* 使用分页标签的检索全部的方法 2008-5-23
*/
@SuppressWarnings("unchecked")
public List<T> findAllByPage(T t,int firstrows,int pagesize){
Example example = Example.create(t);
example.ignoreCase().enableLike(MatchMode.ANYWHERE);//对查询对象进行忽略大小写的模糊查询,适用于动态查询
Criteria criteria = session.createCriteria(t.getClass()).add(example);
criteria.setFirstResult(firstrows);
criteria.setMaxResults(pagesize);
List<T> list = criteria.list();
return list;
}
/**
* 跨表检索 2008-6-3 10:57
* @param t1
* @param t2
* @param firstrows
* @param pagesize
* @return
* @throws HibernateException
*/
public List finddb(T t1, T t2, int firstrows, int pagesize)
throws HibernateException {
Example example = Example.create(t1);
example.ignoreCase().enableLike(MatchMode.ANYWHERE);
example.excludeZeroes();
Example example2 = Example.create(t2);
example2.ignoreCase().enableLike(MatchMode.ANYWHERE);
example2.excludeZeroes();
Criteria criteria = session.createCriteria(t1.getClass()).add(example)
.createCriteria("t2").add(example2);
criteria.setFirstResult(firstrows);
criteria.setMaxResults(pagesize);
List<T> list = criteria.list();
return list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -