Hibernate通用的曾删改查代码
来源:互联网 发布:淘宝 大麦专营店 编辑:程序博客网 时间:2024/05/04 06:37
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;}}/** * 返回单个查询结果对象 */@Overridepublic 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")@Overridepublic <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();}@Overridepublic Integer findManyInteger(Map<String, Object> parameter, String HQL) {// TODO Auto-generated method stubreturn null;}/** * 多条件查询 */@Overridepublic <T> List<T> findManyByQueryCriteria(Map<String, Object> parameter,String HQL) {// TODO Auto-generated method stubreturn null;}}
Hibernate通用的增删改查代码
1 0
- Hibernate通用的曾删改查代码
- SQL的基本曾删改查
- hibernate(3.6)的添删改查研究
- 在网页中实现曾删改查
- java dom4j 曾删改查、编码XML文件
- yii曾删改查(不使用models)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- 一个命令搞定Java Web通用添删改查及分页代码生成(音视频)
- OpenDigg前端开源项目周报1219
- 谷歌浏览器不支持javascript 属性对象获取问题
- HeadFirstC笔记_9 进程与系统调用:打破疆界
- mysql 分组
- Lucene 实例教程(三)之操作索引
- Hibernate通用的曾删改查代码
- mybatis教程,mybatis入门到精通
- 框架模式 MVC 在Android中的使用
- apache缓慢的http拒绝服务攻击修改办法
- Android开发一些实用的工具代码
- MySQL开发技巧学习笔记一
- EventBus使用详解
- YAML 语言教程
- Spring 通知的基本案例