1》接口(主要是增删改查的接口)BaseDao.java

/**
*
* @author fly.zhou
*/
public interface IBaseDao { //增加对应实体的一条记录
public boolean save(Object o); //更新对应实体的一条记录
public boolean update(Object o); //增加或者更新对应实体的一条记录
public boolean saveOrUpdate(Object o); //保存一系列对象集合
public boolean saveOrUpdateAll(Collection l); //删除对应实体的一条记录
public boolean delete(Object o); //根据id删除对应实体的一条记录
public boolean delete(Class c, Serializable id); //执行hql语句删除一条记录
public Integer delete(String hql, Object... values); //删除一系列数据
public boolean deleteAll(Collection l); //执行hql语句查找
public List find(String hql); //分页查询,多参数条件
public List find(String hql, DataGridReq dgr, List values); //分页查询,多参数条件
public List find(String hql, DataGridReq dgr, Object... values); //不带分页查询,多参数条件
public List find(String hql, Object... values); //不带分页查询,多参数条件
public boolean update(String hql, Object... values); //根据主键ID查询对应实体的一条记录
public Object get(Class clazz, Serializable id); //获取某实体对象
public Object load(Class c, Serializable id); //获取总记录数
public Long total(String hql, List values); //获取总记录数
public Long total(String hql, Object... values); //更新对应实体的某一条记录
public boolean updateOneByProperty(Class clazz, Serializable id, String pName, Object pValue); //更新对应实体的某几条记录
public boolean updateOneByPropertys(Class clazz, Serializable id, List<String> pName, List<Object> pValue); //更新对应实体的某几条记录(封装成map)
public boolean updateOneByPropertys(Class clazz, Serializable id, Map<String, Object> map); //根据属性名以及对应的属性值查找一条记录
public Object getSingleByProperty(Class clazz, String pName, Object pValue); //判断是否有对应的属性名和属性值存在,存在返回true
public boolean ifHasOneByProperty(Class clazz, String pName, Object pValue); //根据一系列属性以及对应的属性值查询一条记录
public Object getSingleByPropertys(Class clazz, List<String> pName, List<Object> pValue); //判断是否有一系列对应的属性名和属性值存在,存在返回true
public boolean ifHasOneByPropertys(Class clazz, List<String> pName, List<Object> pValue); //根据一系列属性以及对应的属性值(封装成Map)查询一条记录
public Object getSingleByPropertys(Class clazz, Map<String, Object> map); //判断是否有一系列对应的属性名和属性值(封装成Map)存在,存在返回true
public boolean ifHasOneByPropertys(Class clazz, Map<String, Object> map); //通过某一对应的属性名和属性值,查询某一个属性的值
public Object getValueByPropertys(Class clazz, Map<String, Object> map, String selectName); //通过一系列对应的属性名和属性值,查询某一个属性的值
public Object getValueByProperty(Class clazz, String pName, Object pValue, String selectName); //通过一系列对应的属性名和属性值,查询某一个属性的值
public Object getValueByPropertys(Class clazz, List<String> pNames, List<Object> pValues, String selectName); //查询对应实体的所有记录
public List<Object> getObjects(Class clazz); //查询符合属性名以及对应的属性值的一系列记录
public List<Object> getObjectsByProperty(Class clazz, String pName, Object pValue); //根据任意属性查询名以及对应的属性值的一系列记录
public List<Object> getObjectsByAnyProperty(Class clazz, List<String> pName, List<Object> pValue); //查询符合一系列属性名以及对应的属性值的一系列记录
public List<Object> getObjectsByPropertys(Class clazz, List<String> pName, List<Object> pValue); //根据某属性对应的属性值在某一范围内的一系列记录
public List<Object> getObjectsByProperty(Class clazz, String pName, String operator, Object pValue); //根据某属性对应的属性值在某一范围内的一系列记录
public List<Object> getObjectsByPropertys(Class clazz, List<String> pName, List<String> operator, List<Object> pValue);
}

2》接口的实现 BaseDaoImpl.java

public class BaseDaoImpl implements IBaseDao {

    private static final Logger logger = Logger.getLogger(BaseDaoImpl.class);
private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() {
hibernateTemplate.setCacheQueries(true);// 开启二级查询缓存
return hibernateTemplate;
} @Autowired
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
} @Override
public boolean delete(Object o) {
// logger.info("删除");
try {
this.getHibernateTemplate().delete(o);
return true;
} catch (Exception e) {
return false;
}
} @Override
public boolean delete(Class c, Serializable id) {
// logger.info("删除");
try {
this.getHibernateTemplate().delete(get(c, id));
return true;
} catch (Exception e) {
return false;
}
} @Override
public Integer delete(final String hql, final Object... values) {
return this.getHibernateTemplate().execute(new HibernateCallback<Integer>() { @Override
public Integer doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(hql);
if (values != null && values.length > 0) {
for (int i = 0; i < values.length; i++) {
q.setParameter(i, values[i]);
}
}
return q.executeUpdate();
}
});
} @Override
public boolean deleteAll(Collection l) {
// logger.info("删除");
try {
this.getHibernateTemplate().deleteAll(l);
return true;
} catch (Exception e) {
return false;
}
} @Override
public boolean update(Object o) {
// logger.info("更新");
try {
this.getHibernateTemplate().update(o);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
} @Override
public boolean save(Object o) {
// logger.info("保存");
try {
this.getHibernateTemplate().save(o);
return true;
} catch (Exception e) {
return false;
}
} @Override
public boolean saveOrUpdate(Object o) {
try {
this.getHibernateTemplate().saveOrUpdate(o);
return true;
} catch (Exception e) {
return false;
}
} @Override
public boolean saveOrUpdateAll(Collection l) {
// logger.info("编辑");
try {
this.getHibernateTemplate().saveOrUpdateAll(l);
return true;
} catch (Exception e) {
return false;
}
} @Override
public List find(String hql) {
// logger.info("查询");
return this.getHibernateTemplate().find(hql);
} @Override
public List find(final String hql, final DataGridReq dgr, final List values) {
return this.getHibernateTemplate().execute(new HibernateCallback<List>() { @Override
public List doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(hql);
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
q.setParameter(i, values.get(i));
}
}
if (dgr == null) {
return q.list();
}
return q.setFirstResult(dgr.getStart()).setMaxResults(dgr.getLimit() * dgr.getPage()).list();
}
});
} @Override
public List find(final String hql, final DataGridReq dgr, final Object... values) {
return this.getHibernateTemplate().execute(new HibernateCallback<List>() { @Override
public List doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(hql);
if (values != null && values.length > 0) {
for (int i = 0; i < values.length; i++) {
q.setParameter(i, values[i]);
}
}
if (dgr == null) {
return q.list();
}
return q.setFirstResult(dgr.getStart()).setMaxResults(dgr.getLimit() * dgr.getPage()).list();
}
});
} @Override
public List find(String hql, Object... values) {
return this.getHibernateTemplate().find(hql, values);
} @Override
public boolean update(final String hql, final Object... values) {
try {
this.getHibernateTemplate().bulkUpdate(hql, values);
return true;
} catch (Exception e) {
return false;
}
} @Override
public Object get(Class c, Serializable id) {
return this.getHibernateTemplate().get(c, id);
} @Override
public Object load(Class c, Serializable id) {
return this.getHibernateTemplate().load(c, id);
} @Override
public Long total(final String hql, final List values) {
return this.getHibernateTemplate().execute(new HibernateCallback<Long>() { @Override
public Long doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(hql);
if (values != null && values.size() > 0) {
for (int i = 0; i < values.size(); i++) {
q.setParameter(i, values.get(i));
}
}
return (Long) q.uniqueResult();
}
});
} @Override
public Long total(final String hql, final Object... values) {
return this.getHibernateTemplate().execute(new HibernateCallback<Long>() { @Override
public Long doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(hql);
if (values != null && values.length > 0) {
for (int i = 0; i < values.length; i++) {
q.setParameter(i, values[i]);
}
}
return (Long) q.uniqueResult();
}
});
} @Override
public boolean updateOneByProperty(Class clazz, Serializable id, String pName, Object pValue) {
String hql = "update " + clazz.getName() + " entity set entity." + pName + " = '" + pValue + "' where entity.id = " + id;
getHibernateTemplate().bulkUpdate(hql);
return true;
} @Override
public boolean updateOneByPropertys(Class clazz, Serializable id, List<String> pName, List<Object> pValue) {
String hql = "update " + clazz.getName() + " entity set entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " = '" + pValue.get(i) + "', entity.";
}
hql += pName.get(maxIndex) + " = '" + pValue.get(maxIndex) + "'where entity.id = " + id;
System.out.println(hql);
getHibernateTemplate().bulkUpdate(hql);
return true;
} @Override
public boolean updateOneByPropertys(Class clazz, Serializable id, Map<String, Object> map) {
String hql = "update " + clazz.getName() + " entity set entity.";
Set set = map.entrySet();
if (set != null) {
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
hql += key + " = '" + value + "' and entity.";
}
}
hql = hql.substring(0, hql.length() - 12);
hql += "'where entity.id = " + id;
System.out.println(hql);
getHibernateTemplate().bulkUpdate(hql);
return true;
} /**
* 根据属性查询
*
* @param clazz
* @param pName
* @param pValue
* @return
*/
@Override
public Object getSingleByProperty(Class clazz, String pName, Object pValue) { String hql = "from " + clazz.getName() + " entity where entity." + pName + " = '" + pValue + "'";
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return os.get(0);
} else {
return null;
}
} /**
* 根据属性查询
*
* @param clazz
* @param pName
* @param pValue
* @return
*/
@Override
public boolean ifHasOneByProperty(Class clazz, String pName, Object pValue) {
String hql = "from " + clazz.getName() + " entity where entity." + pName + " = '" + pValue + "'";
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return true;
} else {
return false;
}
} /**
* 根据属性查询
*
* @param clazz
* @param pName
* @param pValue
* @return
*/
@Override
public List<Object> getObjectsByAnyProperty(Class clazz, List<String> pName, List<Object> pValue) {
String hql = "from " + clazz.getName() + " entity where entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " = '" + pValue.get(i) + "' or entity.";
}
hql += pName.get(maxIndex) + " = '" + pValue.get(maxIndex) + "'";
System.out.println(hql);
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return os;
} else {
return null;
}
} @Override
public boolean ifHasOneByPropertys(Class clazz, List<String> pName, List<Object> pValue) {
String hql = "from " + clazz.getName() + " entity where entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " = '" + pValue.get(i) + "' and entity.";
}
hql += pName.get(maxIndex) + " = '" + pValue.get(maxIndex) + "'";
System.out.println(hql);
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return true;
} else {
return false;
}
} @Override
public Object getSingleByPropertys(Class clazz, List<String> pName, List<Object> pValue) { String hql = "from " + clazz.getName() + " entity where entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " = '" + pValue.get(i) + "' and entity.";
}
hql += pName.get(maxIndex) + " = '" + pValue.get(maxIndex) + "'";
System.out.println(hql);
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return os.get(0);
} else {
return null;
}
} @Override
public Object getSingleByPropertys(Class clazz, Map<String, Object> map) {
String hql = "from " + clazz.getName() + " entity where entity.";
Set set = map.entrySet();
if (set != null) {
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
hql += key + " = '" + value + "' and entity.";
}
}
hql = hql.substring(0, hql.length() - 12);
System.out.println("hql = " + hql);
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return os.get(0);
} else {
return null;
}
} @Override
public boolean ifHasOneByPropertys(Class clazz, Map<String, Object> map) { String hql = "from " + clazz.getName() + " entity where entity.";
Set set = map.entrySet();
if (set != null) {
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
hql += key + " = '" + value + "' and entity.";
}
}
hql = hql.substring(0, hql.length() - 12);
List<Object> os = getHibernateTemplate().find(hql);
if (os != null && !os.isEmpty()) {
return true;
} else {
return false;
}
} /**
* 查询所有
*/
@Override
public List<Object> getObjects(Class clazz) {
String hql = "from " + clazz.getName();
List list = getHibernateTemplate().find(hql);
return list;
} /**
* 根据属性查询 全部
*
* @param clazz
* @param pName
* @param pValue
* @return
*/
@Override
public List<Object> getObjectsByProperty(Class clazz, String pName, Object pValue) {
String hql = "from " + clazz.getName() + " entity where entity." + pName + " = '" + pValue + "'";
return getHibernateTemplate().find(hql);
} @Override
public List<Object> getObjectsByPropertys(Class clazz, List<String> pName, List<Object> pValue) {
String hql = "from " + clazz.getName() + " entity where entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " = '" + pValue.get(i) + "' and ";
}
hql += pName.get(maxIndex) + " = '" + pValue.get(maxIndex) + "'";
return getHibernateTemplate().find(hql);
} /**
* 根据属性查询 全部
*
* @param clazz
* @param pName
* @param pValue
* @return
*/
@Override
public List<Object> getObjectsByProperty(Class clazz, String pName, String operator, Object pValue) {
String hql = "from " + clazz.getName() + " entity where entity." + pName + " " + operator + pValue;
return getHibernateTemplate().find(hql);
} @Override
public List<Object> getObjectsByPropertys(Class clazz, List<String> pName, List<String> operator, List<Object> pValue) {
String hql = "from " + clazz.getName() + " entity where entity.";
int maxIndex = pName.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pName.get(i) + " " + operator.get(i) + " '" + pValue.get(i) + "' and ";
}
hql += pName.get(maxIndex) + " " + operator.get(maxIndex) + " '" + pValue.get(maxIndex) + "'";
System.out.println("hql = " + hql);
return getHibernateTemplate().find(hql);
} @Override
public Object getValueByPropertys(Class clazz, Map<String, Object> map, String selectName) {
String hql = "select entity." + selectName + "from " + clazz.getName() + " entity where entity.";
Set set = map.entrySet();
if (set != null) {
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
hql += key + " = '" + value + "' and entity.";
}
}
hql = hql.substring(0, hql.length() - 12);
System.out.println("hql = " + hql);
return getHibernateTemplate().find(hql);
} @Override
public Object getValueByProperty(Class clazz, String pName, Object pValue, String selectName) {
String hql = "select entity." + selectName + " from " + clazz.getName() + " entity where entity." + pName + " = '" + pValue + "'";
System.out.println("hql = " + hql);
return getHibernateTemplate().find(hql);
} @Override
public Object getValueByPropertys(Class clazz, List<String> pNames, List<Object> pValues, String selectName) {
String hql = "select entity." + selectName + "from " + clazz.getName() + " entity where entity.";
int maxIndex = pNames.size() - 1;
for (int i = 0; i < maxIndex; i++) {
hql += pNames.get(i) + " = '" + pValues.get(i) + "' and ";
}
hql += pNames.get(maxIndex) + " = '" + pValues.get(maxIndex) + "'";
System.out.println("hql = " + hql);
return getHibernateTemplate().find(hql);
}
}

3》值得注意的地方Map如何获取key

        Set set = map.entrySet();
if (set != null) {
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Entry entry = (Entry) iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
hql += key + " = '" + value + "' and entity.";
}
}

4》这样写的话 会对项目省去大量的重复代码,在对具体的实体操作时,我们只需要把对应实体的实现继承BaseDaoImpl。

public class XXXDaoImpl extends BaseDaoImpl implements IXXXDao{}

当然我们也可以在XXXDaoImpl里面添加此实体特殊的实现方法。

5》对于hibernate,有时候为了提高查询和执行效率,我们只需要获取部分数据,而不需要拿出关联数据或者是整行的所有数据,这时候我们可以构造函数来解决这个问题。

hibernate实现增删改查的各种方法的更多相关文章

  1. Python笔记·第五章—— 列表(List) 的增删改查及其他方法

    一.列表的简介   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...

  2. 用DBContext (EF) 实现通用增删改查的REST方法

    我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了.下面就是通过step by step的方式 ...

  3. 列表(List) 的增删改查及其他方法

    一.列表的简介   列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...

  4. Hibernate全套增删改查+分页

    1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...

  5. EasyUI + Spring MVC + hibernate实现增删改查导入导出

    (这是一个故事--) 前言 作为一个JAVA开发工程师,我觉得最基本是需要懂前端.后台以及数据库. 练习的内容很基础,包括:基本增删改查.模糊查询.分页查询.树菜单.上传下载.tab页 主管发我一个已 ...

  6. Hibernate基础增删改查语法

    1.创建好Hibernate项目,创建好实体类和测试类,如果不会创建Hibernate项目的同学,点此处:http://www.cnblogs.com/zhaojinyan/p/9336174.htm ...

  7. Hibernate的增删改查

    一.搭建Hibernate开发环境,这里就不说了,直接说环境搭好后的事情. 二.项目的目录结构

  8. hibernate之增删改查demo

    package dao; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import o ...

  9. linux的sed(增删改查)使用方法

    sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...

随机推荐

  1. 复杂TableView在iOS上的性能优化

    声明:本文翻译自<iOS performance optimization>,原文作者 Khang Vo.翻译本文纯属为了技术交流的目的,并不具有任何的商业性质,也不得利用本文内容进行商业 ...

  2. 《javascript高级程序设计》 第23章 离线应用与客户端存储

    23.1 离线检测23.2 应用缓存23.3 数据存储 23.3.1 Cookie 23.3.2 IE 用户数据 23.3.3 Web 存储机制 23.3.4 IndexedDB   23.1 离线检 ...

  3. vs版本与.net framework 版本对应

    vs2002  .net framework 1.0 vs2003 版本号:7.x  .net framework 1.1   window server 2003 vs2005 版本号:8.x  . ...

  4. Objective-C:Foundation框架-常用类-NSDate

    直接上代码吧: #import <Foundation/Foundation.h> #pragma mark 日期创建 void dateCreate() { // date方法返回的就是 ...

  5. HDU 1864

    最大报销额 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. PHP函数——is_subclass_of() 函数 判断一个对象是否为一个类的子类

    说明: bool is_subclass_of ( object $object , string $class_name ) 如果对象 object所属类是类 class_name的子类,则返回 T ...

  7. regsvr32 注册.dll的用法

    Regsvr 32命令是Windows中控件文件(如扩展名为DLL.OCX.CPL的文件)的注册和反注册工具. 命令格式 Regsvr32 [/s] [/n] [/i[:cmdline]] dllna ...

  8. S1 : 函数

    一.做为值的函数 例如,假设有一个对象数组,我们想要根据某个对象属性对数组进行排序.而传递给数组sort()方法的比较函数要接收两个参数,即要比较的值.可是,我们需要一种方式来指明按照哪个属性来排序. ...

  9. iScroll 优化

    iScroll 它比较好的解决了移动互联网 web app 滚动支持问题以及点击事件缓慢的问题,经过简单配置即可让 web app 像原生 app 一样流畅,甚至都不需要改变原来的编码方式,目前它几乎 ...

  10. GCJ 2015-Qualification-A Standing Ovation 难度:0

    https://code.google.com/codejam/contest/6224486/dashboard#s=p0 肯定把朋友们都设置在第0位,在第i位前面必须至少有i个人鼓掌,所以答案加上 ...