万能Dao,应该说绝大多数情况下,它就能提供足够多的操作数据库的功能。
@Repository
public class UniversalDao extends BaseDao {
/**
*
* @param o 保存实体对象
* @return 主键
*/
public Serializable save(Object o) {
return this.getSession().save(o);
}
/**
* 新增或者更新
*
* @param o
*/
public void saveOrUpdate(Object o) {
this.getSession().saveOrUpdate(o);
}
/**
* 更新
*
* @param o
*/
public void update(Object o) {
this.getSession().update(o);
}
/**
* 更新
*
* @param o
*/
public void delete(Object o) {
this.getSession().delete(o);
}
/**
* 查询对象,利用上缓存,实际上调用load
*
* @param clazz
* @param id
* @return
*/
public Object get(Class<?> clazz, Serializable id) {
return this.getSession().get(clazz,id);
}
/**
* 加载对象
*
* @param clazz
* @param id
* @return
*/
public Object load(Class<?> clazz, Serializable id) {
return this.getSession().load(clazz,id);
}
/**
* 返回所以对象实例
*
* @param clazz
* @return
*/
public List<?> getAll(Class<?> clazz) {
return this.getBaseCriteria(clazz).list();
}
/**
* 删除
*
* @param clazz
* @param id
*/
public void delete(Class<?> clazz, Serializable id) {
this.getSession().delete(this.get(clazz, id));
}
/**
* 逐个删除,保证缓存与数据库的统一
*
* @param ids 主键值,
* @return
*/
public int deleteAll(Class<?> clazz, Serializable... ids) {
for (Serializable id : ids) {
delete(clazz, id);
}
return ids.length;
}
}