Dbutis
编辑 | 删除 | 权限设置 | 更多▼ 更多▲
设置置顶 推荐日志 转为私密日志
我不怕 发表于2010年06月01日 13:33 阅读(0) 评论(0) 分类: 个人日记 权限: 仅自己可见
1. package cn.lining.test; 2.
3. import java.sql.Connection; 4. import java.sql.DriverManager; 5. import java.sql.SQLException; 6. import java.util.List; 7. import java.util.Map; 8.
9. import org.apache.commons.dbutils.DbUtils; 10.import org.apache.commons.dbutils.QueryRunner;
11.import org.apache.commons.dbutils.handlers.ArrayHandler; 12.import org.apache.commons.dbutils.handlers.ArrayListHandler; 13.import org.apache.commons.dbutils.handlers.BeanHandler;
14.import org.apache.commons.dbutils.handlers.BeanListHandler; 15.import org.apache.commons.dbutils.handlers.ColumnListHandler;
16.import org.apache.commons.dbutils.handlers.KeyedHandler; 17.import org.apache.commons.dbutils.handlers.MapHandler;
18.import org.apache.commons.dbutils.handlers.MapListHandler; 19.import org.apache.commons.dbutils.handlers.ScalarHandler; 20.
21.public class test {
22. @SuppressWarnings(\"unchecked\")
23. public static void main(String[] args) throws ClassNotFoundException { 24.
25. UserField userField = new UserField(); 26.
27. Connection conn = null;
28. String jdbcURL = \"jdbc:mysql://localhost:3306/macaw4\";
29. String jdbcDriver = \"com.mysql.jdbc.Driver\"; 30. try {
31. DbUtils.loadDriver(jdbcDriver);
32. conn = DriverManager.getConnection(jdbcURL, \"root\", \"root\");
33. conn.setAutoCommit(false);//关闭自动提交 34. QueryRunner qRunner = new QueryRunner(); 35.
36. // 以下部分代码采用MapHandler存储方式查询 37. System.out.println(\"***Using MapHandler***\"); 38. Map map = (Map) qRunner.query(conn,
39. \"select * from mc_user_field where id = ?\", 40. new MapHandler(), new Object[] { \"5\" }); 41.
42. System.out.println(\"id ------------- name \");
43. System.out.println(map.get(\"id\") + \" ------------- \" 44. + map.get(\"name\")); 45.
46. // 以下部分代码采用MapListHandler存储方式查询 47. System.out.println(\"***Using MapListHandler***\"); 48. List lMap = (List) qRunner.query(conn,
49. \"select * from mc_user_field\", new MapListHandler()); 50.
51. System.out.println(\"id ------------- name \"); 52. for (int i = 0; i < lMap.size(); i++) { 53. Map vals = (Map) lMap.get(i);
54. System.out.println(vals.get(\"id\") + \" ------------- \" 55. + vals.get(\"name\")); 56. } 57.
58. // 以下部分代码采用BeanHandler存储方式查询 59. System.out.println(\"***Using BeanHandler***\"); 60. userField = (UserField) qRunner.query(conn, 61. \"select * from mc_user_field where id = ?\",
62. new BeanHandler(Class.forName(\"cn.lining.test.UserField\")),
63. new Object[] { \"5\" });
. System.out.println(\"id ------------- name \");
65. System.out.println(userField.getId() + \" ------------- \" 66. + userField.getName()); 67.
68. // 以下部分代码采用BeanListHandler存储方式查询 69. System.out.println(\"***Using BeanListHandler***\"); 70. List lBean = (List) qRunner.query(conn,
71. \"select * from mc_user_field\", new BeanListHandler(Class
72. .forName(\"cn.lining.test.UserField\"))); 73. System.out.println(\"id ------------- name \"); 74. for (int i = 0; i < lBean.size(); i++) { 75. userField = (UserField) lBean.get(i);
76. System.out.println(userField.getId() + \" ------------- \" 77. + userField.getName()); 78. } 79.
80. // 以下部分代码采用ArrayHandler存储方式查询 81. System.out.println(\"***Using ArrayHandler***\"); 82. Object[] array = (Object[]) qRunner.query(conn, 83. \"select * from mc_user_field where id = ?\", 84. new ArrayHandler(), new Object[] { \"5\" }); 85.
86. System.out.println(\"id ------------- name \");
87. System.out.println(array[0].toString() + \" ------------- \"
88. + array[1].toString()); .
90. // 以下部分代码采用ArrayListHandler存储方式查询 91. System.out.println(\"***Using ArrayListHandler***\"); 92. List lArray = (List) qRunner.query(conn,
93. \"select * from mc_user_field\", new ArrayListHandler()); 94. System.out.println(\"id ------------- name \"); 95. for (int i = 0; i < lArray.size(); i++) { 96. Object[] var = (Object[]) lArray.get(i);
97. System.out.println(var[0].toString() + \" ------------- \" 98. + var[1].toString()); 99. } 100.
101. // 以下部分代码采用ColumnListHandler存储方式查询指定列
102. System.out.println(\"***Using ColumnListHandler***\"); 103. List lName = (List) qRunner.query(conn,
104. \"select * from mc_user_field where id = ?\",
105. new ColumnListHandler(\"name\"), new Object[] { \"5\" });
106. System.out.println(\"name \");
107. for (int i = 0; i < lName.size(); i++) { 108. String name = (String) lName.get(i); 109. System.out.println(name); 110. }
111.
112. // 以下部分代码采用ScalarHandler存储方式查询 113. System.out.println(\"***Using ScalarHandler***\"); 114. String name = (String) qRunner.query(conn, 115. \"select * from mc_user_field where id = ?\",
116. new ScalarHandler(\"name\"), new Object[] { \"5\" }); 117.
118. System.out.println(\"name \"); 119. System.out.println(name); 120.
121. // 以下部分代码采用KeyedHandler存储方式查询 122. System.out.println(\"***Using KeyedHandler***\"); 123. Map map2 = (Map) qRunner.query(conn,124. \"select * from mc_user_field\", new KeyedHandler(\"name\")); 125.
126. System.out.println(\"name: field_name2\"); 127. Map vals = (Map) map2.get(\"field_name2\");
128. System.out.println(vals.get(\"id\") + \" \" + vals.get(\"name\") + \" \"
129. + vals.get(\"type\")); 130.
131. // 以下部分代码插入一条数据
132. System.out.println(\"***Insert begin***\"); 133. userField = new UserField();
134. qRunner.update(conn, \"insert into mc_user_field (\" 135. + \"id,name,type,sort_order,required,visible)\"
136. + \"values (?,?,?,?,?,?)\", new Object[] { userField.getId(),
137. userField.getName(), userField.getType(),
138. userField.getSort_order(), userField.getRequired(),
139. userField.getVisible() });
140. System.out.println(\"***update end***\"); 141.
142. // 以下部分代码更新一条数据
143. System.out.println(\"***update begin***\"); 144. userField = new UserField();
145. qRunner.update(conn, \"update mc_user_field set \" 146. + \"name = ?,type = ?,sort_order = ?,\"
147. + \"required = ?,visible = ?\" + \"where id = ?\", 148. new Object[] { userField.getName(), userField.getType(),
149. userField.getSort_order(), userField.getRequired(),
150. userField.getVisible(), userField.getId() }); 151. System.out.println(\"***update end***\"); 152.
153. // 以下部分代码删除一条数据
154. System.out.println(\"***delete begin***\"); 155. userField = new UserField();
156. qRunner.update(conn, \"delete from mc_user_field where id2 = ?\",
157. new Object[] { userField.getId() }); 158. System.out.println(\"***delete end***\"); 159.
160. } catch (SQLException ex) { 161. ex.printStackTrace(); 162. try {
163. System.out.println(\"***rollback begin***\"); 1. DbUtils.rollback(conn);
165. System.out.println(\"***rollback end***\"); 166. } catch (SQLException e) { 167. e.printStackTrace(); 168. }
169. } finally {
170. DbUtils.closeQuietly(conn); 171. } 172. 173. } 174. }
ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。 BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。 BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。 MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。