惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
M
MIT News - Artificial intelligence
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
N
Netflix TechBlog - Medium
G
Google Developers Blog
L
LangChain Blog
腾讯CDC
大猫的无限游戏
大猫的无限游戏
U
Unit 42
Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
The GitHub Blog
The GitHub Blog
博客园_首页
GbyAI
GbyAI

博客园 - 糊涂隐锋

[转]SSH框架搭建 Java与Flex通信[转] 使用 Eclipse Memory Analyzer 检测内存泄漏问题 [转] Myeclipse SVN 插件安装 将mina整合到tomcat中 JIRA管理思路[转] linux下安装jira4.4.1[转] CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记[转] 安装项目管理工具 SVN+Redmine[转] MySql 优化[转] Red5共享对象的处理机制[转] 【转载】Red5 0.6 安全 quartz数据库方式与web工程整合 ShareObject 主要用途 - 糊涂隐锋 - 博客园 FLEX提高篇---------FMS两种方式实现简易聊天室 - 糊涂隐锋 - 博客园 ShareObject对象详解 shareObject的使用 Flex 中需要记住的一些东西[转] Flex或Flash的跨域访问解决方案
Spring中常用的操作数据库的(Dao)方法 [转]
糊涂隐锋 · 2010-07-31 · via 博客园 - 糊涂隐锋

Spring中常用的操作数据库的(Dao)方法
接口:
public interface BaseDAO {
     void save(T instance);
     void update(T instance);
     void delete(T instance);
     T get(String id);
     List<T> findAll();
     List<T> findByExample(T instance);
     int bulkUpdate(String hql);
     int bulkUpdate(String hql, Object value);
     int bulkUpdate(String hql, Object[] value);
     List<T> find(String queryString);
     List<T> find(String queryString, Object obj);
     List<T> find(String queryString, Object[] obj);
     List<T> findByNamedParam(String queryString, String paramName, Object value);
     List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values);
     List<T> findByNamedQuery(String queryName);
     List<T> findByNamedQuery(String queryName, Object value);
     List<T> findByNamedQuery(String queryName, Object[] values);
     List<T> findByProperty(String property, Object value);
     List<T> findByPagination(final T t, final int firstResult, final int maxResult);
     int countByPagination(final T t);
}
实现类:
import java.sql.*;
import java.util.List;
import org.hibernate.*;
import org.hibernate.criterion.*;
import org.springframework.orm.hibernate3.*;
import org.springframework.orm.hibernate3.support.*;

import com.vo.T;

public abstract class BaseDAOImpl extends HibernateDaoSupport implements BaseDAO{ 

protected abstract Class type();  //反射方法调用类 

// 保存 
public void save(T instance) { 
getHibernateTemplate().save(instance); 

// 更新 
public void update(T instance) { 
getHibernateTemplate().update(instance); 

// 删除 
public void delete(T instance) { 
getHibernateTemplate().delete(instance); 

// 根据ID查询 
@SuppressWarnings("unchecked") 
public T get(String id) { 
return (T) getHibernateTemplate().get(type(), id); 

// 查询所有 
@SuppressWarnings("unchecked") 
public List<T> findAll() { 
return getHibernateTemplate().loadAll(type());

// 根据例子查询 

@SuppressWarnings("unchecked")
public List<T> findByExample(T instance) { 
return getHibernateTemplate().findByExample(instance); 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql) { 
return getHibernateTemplate().bulkUpdate(hql); 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql, Object value) { 
return getHibernateTemplate().bulkUpdate(hql, value); 

// 根据HQL语句进行update操作等 
public int bulkUpdate(String hql, Object[] value) { 
return getHibernateTemplate().bulkUpdate(hql, value); 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString) { 
return getHibernateTemplate().find(queryString); 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString, Object obj) { 

return getHibernateTemplate().find(queryString, obj); 

// 根据HQL语句进行查询 
@SuppressWarnings("unchecked") 
public List<T> find(String queryString, Object[] obj) { 
return getHibernateTemplate().find(queryString, obj); 

/** 
* 使用命名查询进行查询 

* @param queryString 
*            HQL 
* @param paramName 
*            参数名 
* @param value 
*            参数值 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedParam(String queryString, String paramName, Object value) { 
return this.getHibernateTemplate().findByNamedParam(queryString, paramName, value); 

/** 
* 使用命名查询进行查询 多个参数 

* @param queryString 
*            HQL 
* @param paramNames 
*            参数名的数组 
* @param values 
*            参数值的数组 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedParam(String queryString, String[] paramNames, Object[] values) { 
return this.getHibernateTemplate().findByNamedParam(queryString, paramNames, values); 

/** 
* 使用HIBERNATE映射文件中的定义的HQL语句进行查询 

* @param queryName 
*            文件中定义的HQL语句的名字 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName) { 
return getHibernateTemplate().findByNamedQuery(queryName); 

/** 

* @param queryName 
* @param value 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName, Object value) { 
return getHibernateTemplate().findByNamedQuery(queryName, value); 

/** 

* @param queryName 
* @param values 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByNamedQuery(String queryName, Object[] values) { 
return getHibernateTemplate().findByNamedQuery(queryName, values); 

/** 
* 根据属性查询 

* @param property 
* @param value 
* @return 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByProperty(String property, Object value) { 
return this.getHibernateTemplate().findByCriteria( 
DetachedCriteria.forClass(type()).add(Restrictions.eq(property, value))); 

/** 
* 分页查询 
* 注:不能满足要求子类重写该方法 
* @param t 
* @param firstResult 
* @param maxResult 
* @return 返回分页查询的数据 
*/ 
@SuppressWarnings("unchecked") 
public List<T> findByPagination(final T t, final int firstResult, final int maxResult) { 
return getHibernateTemplate().executeFind(new HibernateCallback() { 
public Object doInHibernate(Session session) throws HibernateException, SQLException { 
Criteria criteria = session.createCriteria(type()); 
criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
criteria.setFirstResult(firstResult); 
criteria.setMaxResults(maxResult); 
return criteria.list(); 

}); 

/** 
* 分页统计查询 

* @param t 
* @return 一共有多少条数据 
*/ 
@SuppressWarnings("unchecked") 
public int countByPagination(final T t) { 
return (Integer) getHibernateTemplate().execute(new HibernateCallback() { 
public Object doInHibernate(Session session) throws HibernateException, SQLException { 
Criteria criteria = session.createCriteria(type()); 
criteria.setProjection(Projections.rowCount()); 
criteria.add(Example.create(t).enableLike(MatchMode.ANYWHERE)); 
return criteria.uniqueResult(); 

}); 

}

反射类:

public class ClassInfoDAO{ 

    @SuppressWarnings("unchecked") 
    protected Class type() { 
    return User.class; 
   } 

}
 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wslyy99/archive/2009/01/09/3741680.aspx