⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genericdao.java.svn-base

📁 EasyJWeb是基于java技术
💻 SVN-BASE
字号:
package com.easyjf.core.dao;

import java.io.Serializable;
import java.util.List;

/**
 * 
 * @author easyjf.com
 * 
 * 泛型DAO接口
 */
public interface GenericDAO<T> {

	/**
	 * 根据Id查找一个类型为T的对象。
	 * 
	 * @param id
	 *            传入的ID的值
	 * @return 一个类型为T的对象
	 */
	T get(Serializable id);

	/**
	 * 持久化一个对象,该对象类型为T。
	 * 
	 * @param newInstance
	 *            需要持久化的对象,使用JPA标注。
	 */
	void save(T newInstance);

	/**
	 * 根据对象id删除一个对象,该对象类型为T
	 * 
	 * @param id
	 *            需要删除的对象的id。
	 */
	void remove(Serializable id);

	/**
	 * 更新一个对象,主要用于更新一个在persistenceContext之外的一个对象。
	 * 
	 * @param transientObject
	 *            需要更新的对象,该对象不需要在persistenceContext中。
	 */
	void update(T transientObject);

	/**
	 * 根据对象的一个属性名和该属性名对应的值来查找一个对象。
	 * 
	 * @param propertyName
	 *            属性名
	 * @param value
	 *            属性名对应的值
	 * @return 一个对象,如果在该属性名和值的条件下找到多个对象,则抛出一个IllegalStateException异常
	 */
	T getBy(String propertyName, Object value);

	/**
	 * 根据一个查询条件及其参数,还有开始查找的位置和查找的个数来查找类型为T的对象。
	 * 
	 * @param query
	 *            查询的条件,使用位置参数,对象名统一为obj,查询条件从where后开始。比如:obj.name =
	 *            ?1 and obj.properties = ?2
	 * @param params
	 *            查询条件中的参数的值。使用Object数组,要求顺序和查询条件中的参数位置一致。
	 * @param begin
	 *            开始查询的位置
	 * @param max
	 *            需要查询的对象的个数
	 * @return 一个该类型对象的List对象,如果没有查到任何数据,返回一个空的List对象。
	 */
	List<T> find(String query, Object[] params, int begin, int max);

	/**
	 * 根据一个查询条件及其参数,还有开始查找的位置和查找的个数来查找任意类型的对象。
	 * 
	 * @param query
	 *            完整的查询语句,使用位置参数。比如:select user from User
	 *            user where user.name = ?1 and
	 *            user.properties = ?2
	 * @param params
	 *            查询条件中的参数的值。使用Object数组,要求顺序和查询条件中的参数位置一致。
	 * @param begin
	 *            开始查询的位置
	 * @param max
	 *            需要查询的对象的个数
	 * @return 一个任意对象的List对象,如果没有查到任何数据,返回一个空的List对象。
	 */
	List query(String query, Object[] params, int begin, int max);

	/**
	 * 根据jpql语句执行批量数据更新等操作
	 * 
	 * @param jpql
	 *            需要执行jpql语句
	 * @param params
	 *            语句中附带的参数
	 * @return
	 */
	int batchUpdate(String jpql, Object[] params);

	/**
	 * 执行SQL语句查询
	 * 
	 * @param nnq
	 * @return
	 */
	public List executeNativeNamedQuery(String nnq);

	/**
	 * 执行SQL语句
	 * 
	 * @param nnq
	 * @return
	 */
	public int executeNativeSQL(final String nnq);

	public void flush();

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -