概述
package com.fjk.commonbasedao;
import java.util.List;
import java.util.Map;
import com.fjk.util.QueryCriteria;
/**
* 通用操作接口
*
* @author
*
*/
public interface CommonDao {
/**
* 保存对象
*
* @param
* @return
*/
public <T> Integer save(T entity);
/**
* 删除对象
*
* @param
* @return
*/
public <T> Integer delete(T entity);
/**
* 更新对象
*
* @param
* @return
*/
public <T> Integer update(T entity);
/**
* 保存、更新对象
*
* @param
* @return
*/
public <T> Integer saveOrUpdate(T entity);
/**
* 通过id来查找某一个对像
*
* @param
* @param
* @return
*/
public <T> T findById(Class<T> entityClass, String id);
/**
* 通过HQL语句或者实体类类名查找某类对象
*
* @param
* @param
* @return
*/
public <T> List<T> findByHql(Class<T> entityClass, String HQL);
/**
* 多条件查询 目前仅限于单表条件查询
*
* @param
* @return
* entity封装了查询条件
*/
public <T> List<T> findByObj(T entity);
/**
* 返回单个Object
* @param CriteriaOne
* @param CriteriaTow
* @return
*/
public Object findOneObject(Map<String,Object>parameter ,String HQL);
/**
* 查询数据返回一个集合
* @param CriteriaOne
* @param CriteriaTow
* @return
*/
public <T> List<T> findMany(Map<String,Object>parameter,String HQL);
/**
* 返回Integer
* @param CriteriaOne
* @param CriteriaTow
* @return
*/
public Integer findManyInteger(Map<String,Object>parameter,String HQL);
/**
* 通过QueryCriteria封装的查询条件查询的
* @param criteria
* @return List<T>
*/
public <T> List<T> findManyByQueryCriteria(Map<String,Object>parameter,String HQL);
}
实现类
package com.fjk.commonbasedaoimpl;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Component;
import com.fjk.commonbasedao.CommonDao;
import com.fjk.util.QueryCriteria;
/**
* 通用操作实现类
*
* @author
*
*/
@Component("commoDao")
public class CommonDaoImpl implements CommonDao {
@Resource(name = "sessionFactory")
private SessionFactory getMySessionFactory;
private Session getSession() {
return getMySessionFactory.openSession();
}
/**
* 添加
*/
public <T> Integer save(T entity) {
try {
this.getSession().save(entity);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 删除
*/
public <T> Integer delete(T entity) {
try {
this.getSession().delete(entity);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 更新
*/
public <T> Integer update(T entity) {
try {
this.getSession().update(entity);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 保存或者更新
*/
public <T> Integer saveOrUpdate(T entity) {
try {
this.getSession().saveOrUpdate(entity);
return 1;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
/**
* 根据Id查询某个对象
*/
@SuppressWarnings("unchecked")
public <T> T findById(Class<T> entityClass, String id) {
try {
return (T) this.getSession().get(entityClass, id);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据Bean的全类名查询数据或者HQL语句查询数据据
*/
@SuppressWarnings("unchecked")
public <T> List<T> findByHql(Class<T> entityClass, String hql) {
try {
if (hql == null || hql.equals("")) {
return (List<T>) this.getSession()
.createQuery("from " + entityClass.getName()).list();
}
return (List<T>) this.getSession().createQuery(hql).list();
} catch (DataAccessException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据根据条件查询数据
*/
@SuppressWarnings("unchecked")
public <T> List<T> findByObj(T entity) {
// 保存查询条件中的属性名称
List<Object> fieldName = new ArrayList<Object>();
// 保存查询添加中的属性对应值
List<Object> fieldValue = new ArrayList<Object>();
try {
Class clazz = entity.getClass(); // 获得对应Class对象
Field[] fields = entity.getClass().getDeclaredFields();// 获得对应Class所声明的所有字段
// 遍历所有字段属性
for (Field field : fields) {
// 获得对应get方法
Method getMethod = null;
try {
// 获取不到对应get方法则跳到下个属性
getMethod = new PropertyDescriptor(field.getName(), clazz)
.getReadMethod();
} catch (IntrospectionException e) {
e.getMessage();
continue;
}
Object val = getMethod.invoke(entity, null);
if (val != null) {
fieldName.add(field.getName());
fieldValue.add(val);
}
}
// 根据获取到的查询条件拼接查询语句
StringBuffer hql = new StringBuffer();
hql.append("from ").append(clazz.getName()).append(" a where 1=1 ");
for (int i = 0; i < fieldName.size(); i++) {
String name = fieldName.get(i).toString();
String val = fieldValue.get(i).toString();
hql.append(" and a.").append(name).append("=")
.append("'" + val + "'");
System.out.println(name + "t" + val);
}
System.out.println(hql);
return this.getSession().createQuery(hql.toString()).list();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 返回单个查询结果对象
*/
@Override
public Object findOneObject(Map<String, Object> parameter, String HQL) {
Query query=this.getSession().createQuery(HQL);
String[] pamarsName = query.getNamedParameters();
for (int i = 0; i < pamarsName.length; i++) {
query.setParameter(pamarsName[i], parameter.get(pamarsName[i]));
}
return query.uniqueResult();
}
/**
* 返回多个查询结果对象
*/
@SuppressWarnings("unchecked")
@Override
public <T> List<T> findMany(Map<String, Object> parameter, String HQL) {
Query query=this.getSession().createQuery(HQL);
String[] pamarsName = query.getNamedParameters();//获取参数列表
for (int i = 0; i < pamarsName.length; i++) {
query.setParameter(pamarsName[i], parameter.get(pamarsName[i]));
}
return query.list();
}
@Override
public Integer findManyInteger(Map<String, Object> parameter, String HQL) {
// TODO Auto-generated method stub
return null;
}
/**
* 多条件查询
*/
@Override
public <T> List<T> findManyByQueryCriteria(Map<String, Object> parameter,String HQL) {
// TODO Auto-generated method stub
return null;
}
}
Hibernate通用的增删改查代码
最后
以上就是现实河马为你收集整理的Hibernate通用的曾删改查代码的全部内容,希望文章能够帮你解决Hibernate通用的曾删改查代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复