📄 abstractbasedaoimpl.java
字号:
/**
*
*/
package phz.util.dao;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* @author PanHuizhi [phz50@163.com]
*
*/
public abstract class AbstractBaseDaoImpl<Entity> extends HibernateDaoSupport
implements AbstractBaseDao<Entity> {
private Class<Entity> theEntityClass = getTheEntityClass();
private String theEntityClassName = getTheEntityClass().getName();
protected abstract Class<Entity> getTheEntityClass();
public void add(Entity entity) {
this.getHibernateTemplate().save(entity);
}
public void delete(Entity entity) {
this.getHibernateTemplate().delete(entity);
}
public void delete(List<Entity> entities) {
this.getHibernateTemplate().deleteAll(entities);
}
public void update(Entity entity, String name, Object value) {
String upperFirstLetter = name.substring(0, 1).toUpperCase();
String methodName = "set" + upperFirstLetter + name.substring(1);
try {
theEntityClass.getMethod(methodName, String.class).invoke(entity,
value);
} catch (Exception e) {
throw new RuntimeException(String.format(
"could not find method: %s(%s) in [%s]", methodName,
String.class.getName(), theEntityClass.getName()));
}
this.getHibernateTemplate().update(entity);
}
public void update(Entity entity, String[] names, Object[] values) {
for (int i = 0; i < names.length; i++) {
String upperFirstLetter = names[i].substring(0, 1).toUpperCase();
String methodName = "set" + upperFirstLetter
+ names[i].substring(1);
try {
theEntityClass.getMethod(methodName, String.class).invoke(
entity, values[i]);
} catch (Exception e) {
throw new RuntimeException(String.format(
"could not find method: %s(%s) in [%s]", methodName,
String.class.getName(), theEntityClass.getName()));
}
}
this.getHibernateTemplate().update(entity);
}
public void update(final List<Entity> entities, final String name,
final Object value) {
this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
for (Entity entity : entities) {
String upperFirstLetter = name.substring(0, 1)
.toUpperCase();
String methodName = "set" + upperFirstLetter
+ name.substring(1);
try {
theEntityClass.getMethod(methodName, String.class)
.invoke(entity, value);
} catch (Exception e) {
throw new RuntimeException(String.format(
"could not find method: %s(%s) in [%s]",
methodName, String.class.getName(),
theEntityClass.getName()));
}
session.update(entity);
}
return null;
}
});
}
public void update(final List<Entity> entities, final String[] names,
final Object[] values) {
this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
for (Entity entity : entities) {
for (int i = 0; i < names.length; i++) {
String upperFirstLetter = names[i].substring(0, 1)
.toUpperCase();
String methodName = "set" + upperFirstLetter
+ names[i].substring(1);
try {
theEntityClass.getMethod(methodName, String.class)
.invoke(entity, values[i]);
} catch (Exception e) {
throw new RuntimeException(String.format(
"could not find method: %s(%s) in [%s]",
methodName, String.class.getName(),
theEntityClass.getName()));
}
}
session.update(entity);
}
return null;
}
});
}
public Integer getCountByProperty(String name, Object value) {
StringBuffer buf = new StringBuffer();
buf.append("select count(*) from ").append(theEntityClassName).append(
" entity ");
buf.append("where entity.").append(name).append("=?");
return ((Long) this.getHibernateTemplate().find(buf.toString(), value)
.get(0)).intValue();
}
public Integer getCountByProperty(String[] names, Object[] values) {
StringBuffer buf = new StringBuffer();
buf.append("select count(*) from ").append(theEntityClassName).append(
" entity ");
if (names.length > 0) {
buf.append("where entity.").append(names[0]).append("=?");
for (int i = 1; i < names.length; i++) {
buf.append(" and ");
buf.append("entity.").append(names[i]).append("=? ");
}
}
return ((Long) this.getHibernateTemplate().find(buf.toString(), values)
.get(0)).intValue();
}
public Entity findById(Integer id) {
return (Entity) this.getHibernateTemplate().get(theEntityClass, id);
}
public List<Entity> findByProperty(String name, Object value) {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName).append(" entity ");
buf.append("where entity.").append(name).append("=?");
return this.getHibernateTemplate().find(buf.toString(), value);
}
public List<Entity> findByProperty(final String name, final Object value,
final Integer start, final Integer size) {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName).append(" entity ");
buf.append("where entity.").append(name).append("=?");
final String hql = buf.toString();
List entites = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setParameter(0, value);
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entites;
}
public List<Entity> findByProperty(String[] names, Object[] values) {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName).append(" entity ");
if (names.length > 0) {
buf.append("where entity.").append(names[0]).append("=?");
for (int i = 1; i < names.length; i++) {
buf.append(" and ");
buf.append("entity.").append(names[i]).append("=?");
}
}
return this.getHibernateTemplate().find(buf.toString(), values);
}
public List<Entity> findByProperty(final String[] names,
final Object[] values, final Integer start, final Integer size) {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName).append(" entity ");
if (names.length > 0) {
buf.append("where entity.").append(names[0]).append("=?");
for (int i = 1; i < names.length; i++) {
buf.append(" and ");
buf.append("entity.").append(names[i]).append("=?");
}
}
final String hql = buf.toString();
List entities = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entities;
}
public List<Entity> findAll() {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName);
return this.getHibernateTemplate().find(buf.toString());
}
public List<Entity> findAll(final Integer start, final Integer size) {
StringBuffer buf = new StringBuffer();
buf.append("from ").append(theEntityClassName);
final String hql = buf.toString();
List entities = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entities;
}
public List<Entity> find(String queryString) {
return this.getHibernateTemplate().find(queryString);
}
public List<Entity> find(String queryString, Object value) {
return this.getHibernateTemplate().find(queryString, value);
}
public List<Entity> find(String queryString, Object[] values) {
return this.getHibernateTemplate().find(queryString, values);
}
public List<Entity> find(final String queryString, final Integer start,
final Integer size) {
List entities = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString);
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entities;
}
public List<Entity> find(final String queryString, final Object value,
final Integer start, final Integer size) {
List entities = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString);
query.setParameter(0, value);
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entities;
}
public List<Entity> find(final String queryString, final Object[] values,
final Integer start, final Integer size) {
List entities = getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString);
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
query.setFirstResult(start);
query.setMaxResults(size);
return query.list();
}
});
return entities;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -