View Javadoc
1   /**
2    * Copyright (c) Glodon Co. Ltd.
3    */
4   package gboat2.base.core.dao;
5   
6   import java.io.Serializable;
7   import java.util.List;
8   import java.util.Map;
9   
10  import org.hibernate.SessionFactory;
11  
12  /**
13   * @author lysming 2011-12-6
14   */
15  public interface IBaseDAO {
16  	
17  	/**
18  	 * 
19  	 * 保存(持久化)一个对象
20  	 * @param object 要保存的对象
21  	 * @return String 对象主键
22  	 */
23  	public String save(Object object);
24  	
25  	/**
26  	 * 更新一个对象
27  	 * @param object 要修改的对象
28  	 */
29  	public void update(Object object);
30  	
31  	/**
32  	 * 用语句更新记录
33  	 * @param queryString 查询语句
34  	 * @param params 参数
35  	 */
36  	public void updateByQuery(final String queryString, final Map<String, Object> params);
37  	
38  	/**
39  	 * 删除一个对象
40  	 * @param object	 要删除的对象
41  	 */
42  	public void delete(Object object);
43  	
44  	/**
45  	 * 根据类型和对象id删除一个对象
46  	 * @param clazz	类型
47  	 * @param id	对象id
48  	 */
49  	public void delete(Class<?> clazz, Serializable id);
50  	
51  	/**
52  	 * 根据查询和参数删除全部对象
53  	 * @param queryString	查询语句
54  	 * @param parameters	 参数
55  	 * @return Integer
56  	 */
57  	public Integer deleteByQuery(final String queryString, final Map<String, Object> parameters);
58  	
59  	/**
60  	 * 根据类型和对象id从数据库取得一个对象
61  	 * 
62  	 * @param clazz
63  	 *            类
64  	 * @param id
65  	 *            对象id
66  	 * @return 目标对象
67  	 */
68  	public Object get(Class<?> clazz, Serializable id);
69  	
70  	/**
71  	 * 根据查询语句和查询参数从数据库取得一个对象
72  	 * @param queryString	查询语句
73  	 * @param params	参数
74  	 * @return Object 		单个对象
75  	 */
76  	public Object get(String queryString, Map<String, Object> params);
77  	
78  	/**
79  	 * 返回根据参数查询的结果的第一个符合对象
80  	 * @param params 查询参数
81  	 * @return Object 查询到的对象
82  	 */
83  	public Object get(String[][] params);
84  	
85  	/**
86  	 * 返回根据参数查询的结果的第一个符合对象
87  	 * @param params 查询参数
88  	 * @return Object 查询到的对象
89  	 */
90  	public Object get(Map<String, Object> params);
91  	
92  	/**
93  	 * 通用分页查询
94  	 * 
95  	 * @param hql hql语句
96  	 * @param page	查询的页数
97  	 * @param pagesize	每页条数
98  	 * @param params	查询参数
99  	 * @return	Page 
100 	 */
101 	public Page<?> getPage(String hql, int page, int pagesize, Map<String, Object> params);
102 	
103 	/**
104 	 * 通用分页查询,自动根据queryParams中的参数生成查询
105 	 * 
106 	 * @param queryParams	检索条件,其中包含固定参数TABLENAME,PAGE,PAGESIZE
107 	 * @return Page
108 	 */
109 	public Page<?> getPage(Map<String, Object> queryParams);
110 	
111 	/**
112 	 * 通用分页查询,自动根据queryParams中的参数生成查询
113 	 * 
114 	 * @param queryParams 	 检索条件,其中包含固定参数TABLENAME,PAGE,PAGESIZE
115 	 * @return Page
116 	 */
117 	public Page<?> getPage(String[][] queryParams);
118 	
119 	public List<?> queryListByHql(String hsql, Map<String, Object> params);
120 	
121 	public List<?> queryListBySql(String sql, Map<String, Object> params);
122 	
123 	/**
124 	 * 通用列表查询
125 	 * @param queryParams	查询条件
126 	 * @return Page
127 	 */
128 	public List<?> queryList(Map<String, Object> queryParams);
129 	
130 	/**
131 	 * 通用列表查询
132 	 * @param queryParams	查询条件
133 	 * @return List 结果
134 	 */
135 	public List<?> queryList(String[][] queryParams);
136 	
137 	public void addSessionFactory(SessionFactory sessionFactory);
138 	public void setDefaultSessionFactory(SessionFactory sessionFactory);
139 	public SessionFactory getDefaultSessionFactory();
140 	
141 	/**
142 	 * 解除持久化:把指定的一个缓冲对象进行清除
143 	 * @param object 指定的一个对象 (add by wanghb 2013-01-16)
144 	 */
145 	public void evict (Object object);
146 	
147 	/**
148 	 * saveOrUpdate如果对象没有持久化标识(identifier)属性,对其调用save() ,否则update() 这个对象 ;
149 	 * 如果savaOrUpdate(新po)与另一个与本session关联的po对象拥有相同的持久化标识(identifier),抛出一个异常 
150 	 * @param object 指定的一个对象 (add by wanghb 2013-01-16)
151 	 */
152 	public void saveOrUpdate (Object object);
153 	
154 	/**执行给定sql语句
155 	 * @param sql
156 	 * @param params
157 	 * @return
158 	 */
159 	public int executeUpdateSql(String sql,final Map<String, Object> params);
160 		
161 
162 	/**
163 	 * @param 根据hql提供分页查询 
164 	 * todo : 暂不支持传递变量参数
165 	 * @param params
166 	 * @return
167 	 */
168 	public Page<?> getPageByHql(String hql, Map<String, Object> params);
169 }