📄 genericserviceimpl.java
字号:
/**
* 顶层父类
*/
package com.leo.service.impl;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.transaction.annotation.Transactional;
import com.leo.service.IGenericService;
import com.leo.util.PageInfo;
/**
* @author superleo
*
*/
public class GenericServiceImpl<T, PK extends Serializable> implements
IGenericService<T, PK> {
private Class<T> type;
private HibernateTemplate hibernateTemplate;
public GenericServiceImpl(Class<T> type) {
this.type = type;
}
@Transactional
public void delete(T t) {
hibernateTemplate.delete(t);
}
public T load(PK id) {
return (T) hibernateTemplate.get(type, id);
}
@Transactional
public PK store(T t) {
return (PK) hibernateTemplate.save(t);
}
@Transactional
public void update(T t) {
hibernateTemplate.update(t);
}
@SuppressWarnings("unchecked")
public T findByNameExact(String name) {
List<T> list = this.getHibernateTemplate().find(
"from " + type.getName() + " e where e.name = ? ", name);
return list != null && list.size() == 1 ? list.get(0) : null;
}
public List<T> findByName(String name, PageInfo pageInfo) throws Exception {
String hql = "from " + type.getName() + " e where e.name like '%"
+ name + "%' ";
return this.findByAll(hql, pageInfo);
}
public List<T> findByAll() throws Exception {
String hql = "from " + type.getName() + " e";
System.out.println(hql);
return this.getHibernateTemplate().find(hql);
}
public List<T> findByAll(final String hql, PageInfo pageInfo)
throws Exception {
List<T> pagelist = null;
Session session = this.getHibernateTemplate().getSessionFactory()
.openSession();
pageInfo.setRecordCount(this.getTotalCount(session, hql));
Query query = session.createQuery(hql);
int start = (pageInfo.getPage() - 1) * pageInfo.getPageSize();
int rowNum = pageInfo.getPageSize();
query.setFirstResult(start);
query.setMaxResults(rowNum);
pagelist = query.list();
return pagelist;
}
public List<T> deleteByAll(final String hql) throws Exception {
List<T> pagelist = null;
Session session = this.getHibernateTemplate().getSessionFactory()
.openSession();
Query query = session.createQuery(hql);
query.executeUpdate();
return pagelist;
}
// 取得总数
public int getTotalCount(Session session, String hql) throws Exception {
Integer amount = new Integer(0);
int sql_from = hql.indexOf("from");
int sql_orderby = hql.indexOf("order by");// 为了改进
String countStr = "";
if (sql_orderby > 0) {
countStr = "select count(*) "
+ hql.substring(sql_from, sql_orderby);
} else
countStr = "select count(*) " + hql.substring(sql_from);
Query query = session.createQuery(countStr);
if (!query.list().isEmpty()) {
amount = new Integer(query.list().get(0).toString());
} else
return 0;
return amount.intValue();
}
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -