package com.web.base;
import java.io.File;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
/**
* Generic DAO (Data Access Object) with common methods to CRUD POJOs.
*
* <p>
* Extend this interface if you want typesafe (no casting necessary) DAO's for
* your domain objects.
*
* @author <a href="mailto:bwnoll@gmail.com">Bryan Noll</a>
* @param <T>
* a type variable
* @param <PK>
* the primary key for that type
*/
public interface BaseDao<T, PK extends Serializable> {
/**
* Generic method used to get all objects of a particular type. This is the
* same as lookup up all rows in a table.
*
* @return List of populated objects
*/
List<T> getAll();
/**
* Generic method to get an object based on class and identifier. An
* ObjectRetrievalFailureException Runtime Exception is thrown if nothing is
* found.
*
* @param id
* the identifier (primary key) of the object to get
* @return a populated object
* @see org.springframework.orm.ObjectRetrievalFailureException
*/
T get(PK id);
/**
* Checks for existence of an object of type T using the id arg.
*
* @param id
* the id of the entity
* @return - true if it exists, false if it doesn't
*/
boolean exists(PK id);
/**
* Generic method to save an object - handles both update and insert.
*
* @param object
* the object to save
* @return the persisted object
*/
T save(T object);
/**
* Generic method to delete an object based on class and id
*
* @param id
* the identifier (primary key) of the object to remove
*/
void remove(PK id);
public void removes(PK[] ids);
void remove1(PK id);
public void removes1(PK[] ids);
/**
* Gets all records without duplicates.
* <p>
* Note that if you use this method, it is imperative that your model
* classes correctly implement the hashcode/equals methods
* </p>
*
* @return List of populated objects
*/
List<T> getAllDistinct();
/**
* Find a list of records by using a named query
*
* @param queryName
* query name of the named query
* @param queryParams
* a map of the query names and the values
* @return a list of the records found
*/
List<T> findByNamedQuery(String queryName, Map<String, Object> queryParams);
List<T> getByHql(String hql,Object[] objs);
public void updateQuery(final String hql,final Map map);
public List<T> getPageData(final String hql, final Map map, final int page, final int pageSize);
public int getPageSize(final String hql,final Map map);
public List<T> getPageData(final String hql,final Map map);
public List getAllByHql(String hql,Object[] objs);
public List getBySql(final String sql, Class c);
public BigDecimal getTotalCount(String hql, Map map);
public void saveUploadFile(String eid,File[] files,String[] filesFileName,String[] filesContentType,int[] yxxz);
public void saveUploadFile2(String eid,File[] files,String[] filesFileName,String[] filesContentType,int[] yxxz,String fjlx,String fjlxid);
public void removes2(PK[] ids,Map session);
}
package com.web.base;
import java.io.File;
import org.apache.struts2.interceptor.SessionAware;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import net.sf.json.JSONObject;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
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;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.web.core.utils.EaModelContent;
import com.web.event.vo.Sjfjb;
import com.web.sys.vo.Changelog;
import com.web.sys.vo.Department;
import com.web.sys.vo.Table;
import com.web.sys.vo.TableColumn;
import com.web.utils.FileUtil;
import com.web.utils.Tools;
public class BaseDaoHibernate<T, PK extends Serializable> extends
HibernateDaoSupport implements BaseDao<T, PK> {
/**
* Log variable for all child classes. Uses LogFactory.getLog(getClass())
* from Commons Logging
*/
protected final Log log = LogFactory.getLog(getClass());
private Class<T> persistentClass;
/**
* Constructor that takes in a class to see which type of entity to persist
*
* @param persistentClass
* the class type you'd like to persist
*/
public BaseDaoHibernate(final Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public List<T> getAll() {
return super.getHibernateTemplate().loadAll(this.persistentClass);
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public List<T> getAllDistinct() {
Collection result = new LinkedHashSet(getAll());
return new ArrayList(result);
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public T get(PK id) {
T entity = (T) super.getHibernateTemplate().get(this.persistentClass,
id);
// if (entity == null) {
// log.warn("Uh oh, '" + this.persistentClass + "' object with id '"
// + id + "' not found...");
// throw new ObjectRetrievalFailureException(this.persistentClass, id);
// }
return entity;
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public boolean exists(PK id) {
T entity = (T) super.getHibernateTemplate().get(this.persistentClass,
id);
return entity != null;
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public T save(T object) {
String type=EaModelContent.OPERATE_INSERT;
BaseVo bv=(BaseVo)object;
if(bv!=null&&bv.getId()!=null)
type=EaModelContent.OPERATE_UPDATE;
T entity = (T) super.getHibernateTemplate().merge(object);
saveLog((BaseVo)entity, type);
return entity;
}
/**
* {@inheritDoc}
*/
public void remove(PK id) {
T entity = this.get(id);
if(entity!=null)
super.getHibernateTemplate().delete(entity);
BaseVo bv=(BaseVo)entity;
saveLog(bv,EaModelContent.OPERATE_DELETE);
}
public void removes(PK[] ids) {
for(PK id:ids){
remove(id);
}
}
public void removes2(PK[] ids,Map session) {
Map map = new HashMap();
String hql = "from PK t where t.aid=:id ";
List<Department> departments = (List<Department>) session.get("departments");
for(PK id:ids){
map.put("id", id);
Department d=(Department) super.getHibernateTemplate().load(hql,(Serializable) map);
departments.remove(d);
}
}
public void remove1(PK id) {
String hql="update "+this.persistentClass.getName().toString()+" t set t.remove=1 where t.id=:id";
Map map=new HashMap();
map.put("id", id);
updateQuery(hql,map);
T entity = this.get(id);
BaseVo bv=(BaseVo)entity;
saveLog(bv,EaModelContent.OPERATE_DELETE1);
}
public void removes1(PK[] ids) {
String hql="update "+this.persistentClass.getName().toString()+" t set t.remove=1 where t.id in (:ids)";
Map map=new HashMap();
map.put("ids", ids);
updateQuery(hql,map);
}
public void saveLog(BaseVo bv, String operateType) {
String classname = persistentClass.getName();
Table table = EaModelContent.logTableMap.get(classname);
Date nowdate = Tools.getNowDate();
try {
if (table != null) {
JSONObject json = new JSONObject();
List<TableColumn> tableColumnList = table.getTableColumnList();
if (tableColumnList != null) {
for (TableColumn column : tableColumnList) {
Object value = PropertyUtils.getProperty(bv, column.getAttributename());
json.put(column.getName(), value);
}
}
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
Changelog log = new Changelog();
log.setRequestUrl(request.getRequestURI());
log.setOperateType(operateType);
log.setCreated(nowdate);
log.setCreatedby(bv.getUpdatedby());
log.setInfo(json.toString());
Object pk = PropertyUtils.getProperty(bv, "id");
if (pk != null)
log.setPk((Long) pk);
if (StringUtils.isNotEmpty(table.getBupk())) {
Object buPk = PropertyUtils
.getProperty(bv, table.getBupk());
if (buPk != null)
log.setBuPk(buPk.toString());
}
log.setTableId(table.getId());
getHibernateTemplate().save(log);
}
} catch (Exception e) {
logger.error("插入操作日志异常", e);
e.printStackTrace();
}
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public List<T> findByNamedQuery(String queryName,
Map<String, Object> queryParams) {
String[] params = new String[queryParams.size()];
Object[] values = new Object[queryParams.size()];
int index = 0;
Iterator<String> i = queryParams.keySet().iterator();
while (i.hasNext()) {
String key = i.next();
params[index] = key;
values[index++] = queryParams.get(key);
}
return getHibernateTemplate().findByNamedQueryAndNamedParam(queryName,
params, values);
}
@SuppressWarnings("unchecked")
public List<T> getByHql(String hql, Object[] objs) {
return getHibernateTemplate().find(hql, objs);
}
public void updateQuery(final String hql,final Map map) {
try {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws SQLException, HibernateException {
try {
Query query = session.createQuery(hql).setProperties(map);
query.executeUpdate();
session.close();
return null;
} catch (Exception e) {
session.close();
return null;
}
}
});
} catch (RuntimeException re) {
throw re;
}
}
@SuppressWarnings("unchecked")
public List<T> getPageData(final String hql,final Map map,final int page,final int pageSize){
List<T> list=getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException,SQLException
{
int pageNumber=page;
if(pageNumber==0)
pageNumber=1;
List result=session.createQuery(hql).setProperties(map).setFirstResult((pageNumber-1)*pageSize).setMaxResults(pageSize).list();
return result;
}
});
return list;
}
@SuppressWarnings("unchecked")
public List<T> getPageData(final String hql,final Map map){
List<T> list=getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException,SQLException
{
List result=session.createQuery(hql).setProperties(map).list();
return result;
}
});
return list;
}
public int getPageSize(final String hql,final Map map) {
List list=getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException,SQLException
{
String hq = hql;
HashMap hm = (HashMap)map;
List result=session.createQuery(hql).setProperties(map).list();
return result;
}
});
if(list!=null&&list.size()>0)
return Integer.parseInt(list.get(0).toString());
else return 0;
}
public List getAllByHql(String hql, Object[] objs) {
return getHibernateTemplate().find(hql, objs);
}
public List getBySql(final String sql,Class c) {
return this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(sql).addEntity(c).list();
}
public BigDecimal getTotalCount(final String hql, final Map map) {
List list=getHibernateTemplate().executeFind(new HibernateCallback()
{
public Object doInHibernate(Session session) throws HibernateException,SQLException
{
List result=session.createQuery(hql).setProperties(map).list();
return result;
}
});
if(list!=null&&list.size()>0)
return new BigDecimal(list.get(0).toString());
else return null;
}
public void saveUploadFile(String eid, File[] files, String[] filesFileName, String[] filesContentType,int[] yxxz) {
String path = EaModelContent.uploadfilepath+File.separator+eid; // 写到指定的路径中
File dir = new File(path); //如果指定的路径没有就创建
if (!dir.exists()) {
dir.mkdirs();
}
if(files==null)
return;
for(int i=0;i<files.length;i++){
try{
if(files[i]!=null){
String wjkzm=FileUtil.getExtensionName(filesFileName[i]);
String cclj=Tools.getNowTime()+"-"+Tools.getRandom(System.nanoTime())+"."+wjkzm;
String wjdx=FileUtil.getFileSize(files[i]);
FileUtils.copyFile(files[i], new File(dir, cclj));
Sjfjb sjfjb=new Sjfjb();
sjfjb.setEid(eid);
sjfjb.setWjmc(filesFileName[i]);
sjfjb.setWjkzm(wjkzm);
sjfjb.setContenttype(filesContentType[i]);
sjfjb.setCclj(cclj);
sjfjb.setWjdx(wjdx);
sjfjb.setYxxz(yxxz[i]);
//sjfjb.setXzcs(xzcs);
getHibernateTemplate().save(sjfjb);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
public void saveUploadFile2(String eid, File[] files, String[] filesFileName, String[] filesContentType,int[] yxxz,String fjlx,String fjlxid) {
String path = EaModelContent.uploadfilepath+File.separator+eid; // 写到指定的路径中
File dir = new File(path); //如果指定的路径没有就创建
if (!dir.exists()) {
dir.mkdirs();
}
if(files==null)
return;
for(int i=0;i<files.length;i++){
try{
if(files[i]!=null){
String wjkzm=FileUtil.getExtensionName(filesFileName[i]);
String cclj=Tools.getNowTime()+"-"+Tools.getRandom(System.nanoTime())+"."+wjkzm;
String wjdx=FileUtil.getFileSize(files[i]);
FileUtils.copyFile(files[i], new File(dir, cclj));
Sjfjb sjfjb=new Sjfjb();
sjfjb.setEid(eid);
sjfjb.setWjmc(filesFileName[i]);
sjfjb.setWjkzm(wjkzm);
sjfjb.setContenttype(filesContentType[i]);
sjfjb.setCclj(cclj);
sjfjb.setWjdx(wjdx);
sjfjb.setYxxz(yxxz[i]);
//sjfjb.setXzcs(xzcs);
sjfjb.setFjlx(fjlx);
sjfjb.setFjlxid(fjlxid);
getHibernateTemplate().save(sjfjb);
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
"基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象(Data Access Object)的基础类,用于封装对数据库的通用操作。现在我们来深入探讨`hibernate`中的`BaseDAO`及其相关知识点。 首先,DAO设计模式是...
**基于Hibernate的BaseDAO** 在Java企业级开发中,数据访问层(DAO,Data Access Object)是连接业务逻辑层和数据库的重要桥梁。BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层...
"常用的BaseDAO及其实现" BaseDAO是Java中一种常用的数据访问对象(DAO),它提供了统一的数据访问接口,封装了数据访问的基本操作。BaseDAO通常是通过继承HibernateDaoSupport类实现的。 BaseDAO的主要功能包括:...
在Java开发中,BaseDao和BaseService是常见的设计模式,用于实现数据访问层(DAO)和业务逻辑层(Service)的抽象基类。通过结合泛型,我们可以创建更通用、灵活的代码,减少冗余并提高代码质量。 首先,我们来理解...
"SpringBoot_BaseDao.zip"这个压缩包文件显然与SpringBoot相关的数据库操作有关,特别是关于BaseDao的基础使用和实现。在Java开发中,Dao(Data Access Object)层是负责处理数据访问的,通常用于与数据库进行交互。...
MyBatis BaseDAO 是一种基于 MyBatis 框架的工具类库,它旨在简化数据库操作,通过封装常见的CRUD(Create、Read、Update、Delete)方法,为开发者提供便利,减少重复代码,提高开发效率。在Java Web 开发中,...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而BaseDao是常用于数据访问层的一个基类设计。本话题主要围绕如何利用SSH框架结合BaseDao实现分页功能来展开。 首先,让我们了解...
本篇将重点讲解Spring的声明式事务管理和BaseDao的设计与实现。 一、Spring声明式事务管理 1. **什么是事务**:事务是数据库操作的基本单元,它保证了数据的一致性和完整性。一个事务中的所有操作要么全部成功,...
在Java编程语言中,BaseDao(基础数据访问对象)是一个常见的设计模式,它为数据库操作提供了一种统一的接口。BaseDao通常包含了CRUD(创建、读取、更新、删除)的基本方法,使得开发者可以方便地对数据库进行操作,...
在企业级软件开发中,通用BaseDao方法集是提高代码复用性和开发效率的重要工具。BaseDao(Base Data Access Object)通常是一个基类,它包含了数据库操作的基本方法,供其他具体的DAO类继承使用。BaseDao的设计理念...
这个是一个公共的basedao类。需要使用的话直接复制。内容看看就明白了
在IT行业中,数据库操作是应用程序的核心部分,而`BaseDao`的封装则是一种常见的设计模式,用于简化数据库访问层(DAO)的实现。这个模式的主要目的是提高代码的可复用性和可维护性,减少重复的SQL操作代码。下面...
在Java的持久化框架Hibernate中,BaseDAO(Base Data Access Object)是一种常见的设计模式,用于封装数据库操作,提供一套标准的方法来实现CRUD(Create、Read、Update、Delete)操作。这种模式使得业务层可以更加...
`jdbcBaseDao` 是一个基于Java的数据库访问层基础类,它封装了JDBC(Java Database Connectivity)的一些常见操作,如增、删、改、查等,旨在简化数据库交互过程,提高代码的可读性和可维护性。对于初学者来说,理解...
`BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...
在标题提到的"SSH集成查询分页处理BaseDao"中,我们主要关注的是如何在SSH框架下实现数据的分页查询。 分页是大型Web应用中必不可少的功能,它能够帮助用户更有效地浏览和管理大量数据。在这个场景中,"BaseDao...
### 基于Spring JDBC的BaseDAO实现与应用 #### 概述 在Java开发领域,尤其是企业级应用开发中,持久层框架是至关重要的组件之一。Spring框架提供了多种方式来处理数据库操作,其中Spring JDBC模块是轻量级且功能...
基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872