當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
在Spring中使用DButils
生活随笔
收集整理的這篇文章主要介紹了
在Spring中使用DButils
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 <!-- 定義數(shù)據(jù)源Bean-->
2 <bean id="dataSource"
3 class="org.apache.commons.dbcp.BasicDataSource"
4 destroy-method="close">
5 <property name="driverClassName"
6 value="${jdbc.driverClassName}" />
7 <property name="url" value="${jdbc.url}" />
8 <property name="username" value="${jdbc.username}" />
9 <property name="password" value="${jdbc.password}" />
10 </bean>
11 <!-- 下面定義了DbUtils的一個(gè)模板操作Bean -->
12 <bean id="dbUtilsTemplate" class="com.company.project.dao.template.DbUtilsTemplate">
13 <property name="dataSource" ref="dataSource" />
14 </bean> 1 package com.company.project.dao.template;
2
3 import java.sql.SQLException;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.Map;
7
8 import javax.sql.DataSource;
9
10 import org.apache.commons.dbcp.BasicDataSource;
11 import org.apache.commons.dbutils.QueryRunner;
12 import org.apache.commons.dbutils.handlers.BeanHandler;
13 import org.apache.commons.dbutils.handlers.BeanListHandler;
14 import org.apache.commons.dbutils.handlers.MapHandler;
15 import org.apache.commons.dbutils.handlers.MapListHandler;
16 import org.apache.commons.dbutils.handlers.ScalarHandler;
17 import org.apache.commons.logging.Log;
18 import org.apache.commons.logging.LogFactory;
19
20 /**
21 * 調(diào)用Apache Commons DBUtil組件的數(shù)據(jù)庫(kù)操作類(lèi)
22 * 采用DBCP作為數(shù)據(jù)源,數(shù)據(jù)源在Spring中已經(jīng)配置好
23 * 本類(lèi)已經(jīng)在Spring中配置好,在需要的地方,set注入后即可調(diào)用
24 * <code>
25 * private DbUtilsTemplate dbUtilsTemplate;
26 * public void setDbUtilsTemplate(DbUtilsTemplate dbUtilsTemplate) {
27 * this.dbUtilsTemplate = dbUtilsTemplate;
28 * }
29 * </code>
30 * @author Sunshine
31 * @version 1.0 2009-07-29
32 */
33 public class DbUtilsTemplate {
34
35 private DataSource dataSource;
36 private QueryRunner queryRunner;
37 private static final Log LOG = LogFactory.getLog(DbUtilsTemplate.class);
38
39 public void setDataSource(BasicDataSource dataSource) {
40 this.dataSource = dataSource;
41 }
42
43 /**
44 * 執(zhí)行sql語(yǔ)句
45 * @param sql sql語(yǔ)句
46 * @return 受影響的行數(shù)
47 */
48 public int update(String sql) {
49 return update(sql, null);
50 }
51
52 /**
53 * 執(zhí)行sql語(yǔ)句
54 * <code>
55 * executeUpdate("update user set username = 'kitty' where username = ?", "hello kitty");
56 * </code>
57 * @param sql sql語(yǔ)句
58 * @param param 參數(shù)
59 * @return 受影響的行數(shù)
60 */
61 public int update(String sql, Object param) {
62 return update(sql, new Object[] { param });
63 }
64
65 /**
66 * 執(zhí)行sql語(yǔ)句
67 * @param sql sql語(yǔ)句
68 * @param params 參數(shù)數(shù)組
69 * @return 受影響的行數(shù)
70 */
71 public int update(String sql, Object[] params) {
72 queryRunner = new QueryRunner(dataSource);
73 int affectedRows = 0;
74 try {
75 if (params == null) {
76 affectedRows = queryRunner.update(sql);
77 } else {
78 affectedRows = queryRunner.update(sql, params);
79 }
80 } catch (SQLException e) {
81 LOG.error("Error occured while attempting to update data", e);
82 }
83 return affectedRows;
84 }
85
86 /**
87 * 執(zhí)行批量sql語(yǔ)句
88 * @param sql sql語(yǔ)句
89 * @param params 二維參數(shù)數(shù)組
90 * @return 受影響的行數(shù)的數(shù)組
91 */
92 public int[] batchUpdate(String sql, Object[][] params) {
93 queryRunner = new QueryRunner(dataSource);
94 int[] affectedRows = new int[0];
95 try {
96 affectedRows = queryRunner.batch(sql, params);
97 } catch (SQLException e) {
98 LOG.error("Error occured while attempting to batch update data", e);
99 }
100 return affectedRows;
101 }
102
103 /**
104 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到一個(gè)Map對(duì)象中,然后將所有Map對(duì)象保存到List中
105 * @param sql sql語(yǔ)句
106 * @return 查詢(xún)結(jié)果
107 */
108 public List<Map<String, Object>> find(String sql) {
109 return find(sql, null);
110 }
111
112 /**
113 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到一個(gè)Map對(duì)象中,然后將所有Map對(duì)象保存到List中
114 * @param sql sql語(yǔ)句
115 * @param param 參數(shù)
116 * @return 查詢(xún)結(jié)果
117 */
118 public List<Map<String, Object>> find(String sql, Object param) {
119 return find(sql, new Object[] {param});
120 }
121
122 /**
123 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到一個(gè)Map對(duì)象中,然后將所有Map對(duì)象保存到List中
124 * @param sql sql語(yǔ)句
125 * @param params 參數(shù)數(shù)組
126 * @return 查詢(xún)結(jié)果
127 */
128 @SuppressWarnings("unchecked")
129 public List<Map<String, Object>> find(String sql, Object[] params) {
130 queryRunner = new QueryRunner(dataSource);
131 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
132 try {
133 if (params == null) {
134 list = (List<Map<String, Object>>) queryRunner.query(sql, new MapListHandler());
135 } else {
136 list = (List<Map<String, Object>>) queryRunner.query(sql, new MapListHandler(), params);
137 }
138 } catch (SQLException e) {
139 LOG.error("Error occured while attempting to query data", e);
140 }
141 return list;
142 }
143
144 /**
145 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到Bean中,然后將所有Bean保存到List中
146 * @param entityClass 類(lèi)名
147 * @param sql sql語(yǔ)句
148 * @return 查詢(xún)結(jié)果
149 */
150 public <T> List<T> find(Class<T> entityClass, String sql) {
151 return find(entityClass, sql, null);
152 }
153
154 /**
155 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到Bean中,然后將所有Bean保存到List中
156 * @param entityClass 類(lèi)名
157 * @param sql sql語(yǔ)句
158 * @param param 參數(shù)
159 * @return 查詢(xún)結(jié)果
160 */
161 public <T> List<T> find(Class<T> entityClass, String sql, Object param) {
162 return find(entityClass, sql, new Object[] { param });
163 }
164
165 /**
166 * 執(zhí)行查詢(xún),將每行的結(jié)果保存到Bean中,然后將所有Bean保存到List中
167 * @param entityClass 類(lèi)名
168 * @param sql sql語(yǔ)句
169 * @param params 參數(shù)數(shù)組
170 * @return 查詢(xún)結(jié)果
171 */
172 @SuppressWarnings("unchecked")
173 public <T> List<T> find(Class<T> entityClass, String sql, Object[] params) {
174 queryRunner = new QueryRunner(dataSource);
175 List<T> list = new ArrayList<T>();
176 try {
177 if (params == null) {
178 list = (List<T>) queryRunner.query(sql, new BeanListHandler(entityClass));
179 } else {
180 list = (List<T>) queryRunner.query(sql, new BeanListHandler(entityClass), params);
181 }
182 } catch (SQLException e) {
183 LOG.error("Error occured while attempting to query data", e);
184 }
185 return list;
186 }
187
188 /**
189 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成對(duì)象
190 * @param entityClass 類(lèi)名
191 * @param sql sql語(yǔ)句
192 * @return 對(duì)象
193 */
194 public <T> T findFirst(Class<T> entityClass, String sql) {
195 return findFirst(entityClass, sql, null);
196 }
197
198 /**
199 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成對(duì)象
200 * @param entityClass 類(lèi)名
201 * @param sql sql語(yǔ)句
202 * @param param 參數(shù)
203 * @return 對(duì)象
204 */
205 public <T> T findFirst(Class<T> entityClass, String sql, Object param) {
206 return findFirst(entityClass, sql, new Object[] { param });
207 }
208
209 /**
210 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成對(duì)象
211 * @param entityClass 類(lèi)名
212 * @param sql sql語(yǔ)句
213 * @param params 參數(shù)數(shù)組
214 * @return 對(duì)象
215 */
216 @SuppressWarnings("unchecked")
217 public <T> T findFirst(Class<T> entityClass, String sql, Object[] params) {
218 queryRunner = new QueryRunner(dataSource);
219 Object object = null;
220 try {
221 if (params == null) {
222 object = queryRunner.query(sql, new BeanHandler(entityClass));
223 } else {
224 object = queryRunner.query(sql, new BeanHandler(entityClass), params);
225 }
226 } catch (SQLException e) {
227 LOG.error("Error occured while attempting to query data", e);
228 }
229 return (T) object;
230 }
231
232 /**
233 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成Map對(duì)象
234 * @param sql sql語(yǔ)句
235 * @return 封裝為Map的對(duì)象
236 */
237 public Map<String, Object> findFirst(String sql) {
238 return findFirst(sql, null);
239 }
240
241 /**
242 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成Map對(duì)象
243 * @param sql sql語(yǔ)句
244 * @param param 參數(shù)
245 * @return 封裝為Map的對(duì)象
246 */
247 public Map<String, Object> findFirst(String sql, Object param) {
248 return findFirst(sql, new Object[] { param });
249 }
250
251 /**
252 * 查詢(xún)出結(jié)果集中的第一條記錄,并封裝成Map對(duì)象
253 * @param sql sql語(yǔ)句
254 * @param params 參數(shù)數(shù)組
255 * @return 封裝為Map的對(duì)象
256 */
257 @SuppressWarnings("unchecked")
258 public Map<String, Object> findFirst(String sql, Object[] params) {
259 queryRunner = new QueryRunner(dataSource);
260 Map<String, Object> map = null;
261 try {
262 if (params == null) {
263 map = (Map<String, Object>) queryRunner.query(sql, new MapHandler());
264 } else {
265 map = (Map<String, Object>) queryRunner.query(sql, new MapHandler(), params);
266 }
267 } catch (SQLException e) {
268 LOG.error("Error occured while attempting to query data", e);
269 }
270 return map;
271 }
272
273 /**
274 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
275 * @param sql sql語(yǔ)句
276 * @param columnName 列名
277 * @return 結(jié)果對(duì)象
278 */
279 public Object findBy(String sql, String columnName) {
280 return findBy(sql, columnName, null);
281 }
282
283 /**
284 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
285 * @param sql sql語(yǔ)句
286 * @param columnName 列名
287 * @param param 參數(shù)
288 * @return 結(jié)果對(duì)象
289 */
290 public Object findBy(String sql, String columnName, Object param) {
291 return findBy(sql, columnName, new Object[] { param });
292 }
293
294 /**
295 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
296 * @param sql sql語(yǔ)句
297 * @param columnName 列名
298 * @param params 參數(shù)數(shù)組
299 * @return 結(jié)果對(duì)象
300 */
301 public Object findBy(String sql, String columnName, Object[] params) {
302 queryRunner = new QueryRunner(dataSource);
303 Object object = null;
304 try {
305 if (params == null) {
306 object = queryRunner.query(sql, new ScalarHandler(columnName));
307 } else {
308 object = queryRunner.query(sql, new ScalarHandler(columnName), params);
309 }
310 } catch (SQLException e) {
311 LOG.error("Error occured while attempting to query data", e);
312 }
313 return object;
314 }
315
316 /**
317 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
318 * @param sql sql語(yǔ)句
319 * @param columnIndex 列索引
320 * @return 結(jié)果對(duì)象
321 */
322 public Object findBy(String sql, int columnIndex) {
323 return findBy(sql, columnIndex, null);
324 }
325
326 /**
327 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
328 * @param sql sql語(yǔ)句
329 * @param columnIndex 列索引
330 * @param param 參數(shù)
331 * @return 結(jié)果對(duì)象
332 */
333 public Object findBy(String sql, int columnIndex, Object param) {
334 return findBy(sql, columnIndex, new Object[] { param });
335 }
336
337 /**
338 * 查詢(xún)某一條記錄,并將指定列的數(shù)據(jù)轉(zhuǎn)換為Object
339 * @param sql sql語(yǔ)句
340 * @param columnIndex 列索引
341 * @param params 參數(shù)數(shù)組
342 * @return 結(jié)果對(duì)象
343 */
344 public Object findBy(String sql, int columnIndex, Object[] params) {
345 queryRunner = new QueryRunner(dataSource);
346 Object object = null;
347 try {
348 if (params == null) {
349 object = queryRunner.query(sql, new ScalarHandler(columnIndex));
350 } else {
351 object = queryRunner.query(sql, new ScalarHandler(columnIndex), params);
352 }
353 } catch (SQLException e) {
354 LOG.error("Error occured while attempting to query data", e);
355 }
356 return object;
357 }
358 }
?
總結(jié)
以上是生活随笔為你收集整理的在Spring中使用DButils的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 真机运行报错:Could not cha
- 下一篇: dojo readings