Spring中jdbcTemplate的用法.docx_第1页
Spring中jdbcTemplate的用法.docx_第2页
Spring中jdbcTemplate的用法.docx_第3页
Spring中jdbcTemplate的用法.docx_第4页
Spring中jdbcTemplate的用法.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spring中jdbcTemplate的用法实例(一)博客分类: spring一、首先配置JdbcTemplate;要使用Jdbctemplate 对象来完成jdbc 操作。通常情况下,有三种种方式得到JdbcTemplate 对象。 第一种方式:我们可以在自己定义的DAO 实现类中注入一个DataSource 引用来完 成JdbcTemplate 的实例化。也就是它是从外部“注入” DataSource 到DAO 中,然后 自己实例化JdbcTemplate,然后将DataSource 设置到JdbcTemplate 对象中。 第二种方式: 在 Spring 的 IoC 容器中配置一个 JdbcTemplate 的 bean,将 DataSource 注入进来,然后再把JdbcTemplate 注入到自定义DAO 中。第三种方式: Spring 提供了 org.springframework.jdbc.core.support.JdbcDaoSupport 类 , 这 个 类 中 定 义 了 JdbcTemplate 属性,也定义了DataSource 属性,当设置DataSource 属性的时候,会创 建jdbcTemplate 的实例,所以我们自己编写的DAO 只需要继承JdbcDaoSupport 类, 然后注入DataSource 即可。提倡采用第三种方法。虽然下面的用法中采用了前两种方法 配置方法有3种: 1、Java代码1. publicclassUserServiceImplimplementsUserService2. 3. privateJdbcTemplatejdbcTemplate;4. 5. publicJdbcTemplategetJdbcTemplate()6. returnjdbcTemplate;7. 8. 9. /注入方法110. publicvoidsetJdbcTemplate(JdbcTemplatejdbcTemplate)11. this.jdbcTemplate=jdbcTemplate;12. 13. 14. /其它方法这里省略15. spring配置文件为:Xml代码1. 2. 3. 4. 5. 6. 方法2、Java代码1. publicclassUserServiceImplimplementsUserService2. 3. privateJdbcTemplatejdbcTemplate;4. 5. /注入方法26. publicvoidsetDataSource(DataSourcedataSource)7. this.jdbcTemplate=newJdbcTemplate(dataSource);8. 9. 10. /其它方法省略11. spring配置文件为:Xml代码1. 2. 3. 方法3:继承JdbcDaoSupport,其内部有个JdbcTemplate ,需要注入DataSource 属性来实例化。Java代码1. publicclassUserDaoImplextendsJdbcDaoSupportimplementsUserDao2. 3. Override4. publicvoidsave(Useruser)5. Stringsql=null;6. this.getJdbcTemplate().update(sql);7. 8. /其它方法省略9. spring配置文件:Xml代码1. 2. 3. 二、常用方法使用【注意:】jdbcTemplate 中的sql均是用“?”做占位符的domain User:Java代码1. publicclassUser2. privateintid;3. privateStringusername;4. privateStringpassword;5. privateStringsex;6. 7. /setter和getter方法省略8. UserServiceImpl :如果采用第三种方式,则下面的用法中将方法中的 jdbcTemplate 换成 this.getJdbcTemplate()即可。Java代码1. /*2. *创建表3. */4. publicvoidcreate(StringtableName)/tb_test15. jdbcTemplate.execute(createtable+tableName+(idinteger,user_namevarchar2(40),passwordvarchar2(40);6. 7. 8. /jdbcTemplate.update适合于insert、update和delete操作;9. /*10. *第一个参数为执行sql11. *第二个参数为参数数据12. */13. publicvoidsave3(Useruser)14. Assert.isNull(user,userisnotnull);15. jdbcTemplate.update(insertintotb_test1(name,password)values(?,?),16. newObjectuser.getUsername(),user.getPassword();17. 18. 19. /*20. *第一个参数为执行sql21. *第二个参数为参数数据22. *第三个参数为参数类型23. */24. Override25. publicvoidsave(Useruser)26. Assert.isNull(user,userisnotnull);27. jdbcTemplate.update(28. insertintotb_test1(name,password)values(?,?),29. newObjectuser.getUsername(),user.getPassword(),30. newintjava.sql.Types.VARCHAR,java.sql.Types.VARCHAR31. );32. 33. 34. /避免sql注入35. publicvoidsave2(finalUseruser)36. Assert.isNull(user,userisnotnull);37. 38. jdbcTemplate.update(insertintotb_test1(name,password)values(?,?),39. newPreparedStatementSetter()40. 41. Override42. publicvoidsetValues(PreparedStatementps)throwsSQLException43. ps.setString(1,user.getUsername();44. ps.setString(2,user.getPassword();45. 46. );47. 48. 49. 50. publicvoidsave4(Useruser)51. Assert.isNull(user,userisnotnull);52. jdbcTemplate.update(insertintotb_test1(name,password)values(?,?),53. newObjectuser.getUsername(),user.getPassword();54. 55. 56. /返回插入的主键57. publicListsave5(finalUseruser)58. 59. KeyHolderkeyHolder=newGeneratedKeyHolder();60. 61. jdbcTemplate.update(newPreparedStatementCreator()62. 63. Override64. publicPreparedStatementcreatePreparedStatement(Connectionconnection)throwsSQLException65. PreparedStatementps=connection.prepareStatement(insertintotb_test1(name,password)values(?,?),newStringid);66. ps.setString(1,user.getUsername();67. ps.setString(2,user.getPassword();68. returnps;69. 70. ,71. keyHolder);72. 73. returnkeyHolder.getKeyList();74. 75. 76. Override77. publicvoidupdate(finalUseruser)78. jdbcTemplate.update(79. updatetb_test1setname=?,password=?whereid=?,80. newPreparedStatementSetter()81. Override82. publicvoidsetValues(PreparedStatementps)throwsSQLException83. ps.setString(1,user.getUsername();84. ps.setString(2,user.getPassword();85. ps.setInt(3,user.getId();86. 87. 88. );89. 90. 91. Override92. publicvoiddelete(Useruser)93. Assert.isNull(user,userisnotnull);94. jdbcTemplate.update(95. deletefromtb_test1whereid=?,96. newObjectuser.getId(),97. newintjava.sql.Types.INTEGER);98. 99. 100. Deprecated/因为没有查询条件,所以用处不大101. publicintqueryForInt1()102. returnjdbcTemplate.queryForInt(selectcount(0)fromtb_test1);103. 104. 105. publicintqueryForInt2(Useruser)106. returnjdbcTemplate.queryForInt(selectcount(0)fromtb_test1whereusername=?,107. newObjectuser.getUsername();108. 109. 110. /最全的参数3个111. publicintqueryForInt3(Useruser)112. returnjdbcTemplate.queryForInt(selectcount(0)fromtb_test1whereusername=?,113. newObjectuser.getUsername(),114. newintjava.sql.Types.VARCHAR);115. 116. 117. /可以返回是一个基本类型的值118. Deprecated/因为没有查询条件,所以用处不大119. publicStringqueryForObject1(Useruser)120. return(String)jdbcTemplate.queryForObject(selectusernamefromtb_test1whereid=100,121. String.class);122. 123. 124. /可以返回值是一个对象125. Deprecated/因为没有查询条件,所以用处不大126. publicUserqueryForObject2(Useruser)127. return(User)jdbcTemplate.queryForObject(select*fromtb_test1whereid=100,User.class);/class是结果数据的java类型128. 129. 130. Deprecated/因为没有查询条件,所以用处不大131. publicUserqueryForObject3(Useruser)132. return(User)jdbcTemplate.queryForObject(select*fromtb_test1whereid=100,133. newRowMapper()134. 135. Override136. publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException137. Useruser=newUser();138. user.setId(rs.getInt(id);139. user.setUsername(rs.getString(username);140. user.setPassword(rs.getString(password);141. returnuser;142. 143. 144. );145. 146. 147. publicUserqueryForObject4(Useruser)148. return(User)jdbcTemplate.queryForObject(select*fromtb_test1whereid=?,149. newObjectuser.getId(),150. User.class);/class是结果数据的java类型实际上这里是做反射,将查询的结果和User进行对应复制151. 152. 153. publicUserqueryForObject5(Useruser)154. return(User)jdbcTemplate.queryForObject(155. select*fromtb_test1whereid=?,156. newObjectuser.getId(),157. newRowMapper()158. 159. Override160. publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException161. Useruser=newUser();162. user.setId(rs.getInt(id);163. user.setUsername(rs.getString(username);164. user.setPassword(rs.getString(password);165. returnuser;166. 167. 168. );/class是结果数据的java类型169. 170. 171. Override172. publicUserqueryForObject(Useruser)173. /方法有返回值174. return(User)jdbcTemplate.queryForObject(select*fromtb_test1whereid=?,175. newObjectuser.getId(),176. newintjava.sql.Types.INTEGER,177. newRowMapper()178. 179. Override180. publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException181. Useruser=newUser();182. user.setId(rs.getInt(id);183. user.setUsername(rs.getString(username);184. user.setPassword(rs.getString(password);185. returnuser;186. 187. 188. );189. 190. 191. SuppressWarnings(unchecked)192. publicListqueryForList1(Useruser)193. return(List)jdbcTemplate.queryForList(select*fromtb_test1whereusername=?,194. newObjectuser.getUsername(),195. User.class);196. 197. 198. SuppressWarnings(unchecked)199. publicListqueryForList2(Useruser)200. return(List)jdbcTemplate.queryForList(selectusernamefromtb_test1wheresex=?,201. newObjectuser.getSex(),202. String.class);203. 204. 205. SuppressWarnings(unchecked)206. /最全的参数查询207. publicListqueryForList3(Useruser)208. return(List)jdbcTemplate.queryForList(select*fromtb_test1whereusername=?,209. newObjectuser.getUsername(),210. newintjava.sql.Types.VARCHAR,211. User.class);212. 213. 214. /通过RowCallbackHandler对Select语句得到的每行记录进行解析,并为其创建一个User数据对象。实现了手动的OR映射。215. publicUserqueryUserById4(Stringid)216. finalUseruser=newUser();217. 218. /该方法返回值为void219. this.jdbcTemplate.query(select*fromtb_test1whereid=?,220. newObjectid,221. newRowCallbackHandler()222. 223. Override224. publicvoidprocessRow(ResultSetrs)throwsSQLException225. Useruser=newUser();226. user.setId(rs.getInt(id);227. user.setUsername(rs.getString(username);228. user.setPassword(rs.getString(password);229. 230. );231. 232. returnuser;233. 234. 235. SuppressWarnings(unchecked)236. Override237. publicListlist(Useruser)238. returnjdbcTemplate.query(select*fromtb_test1whereusernamelike%?%,239. newObjectuser.getUsername(),240. newintjava.sql.Types.VARCHAR,241. newRowMapper()242. 243. Override244. publicObjectmapRow(ResultSetrs,introwNum)throwsSQLException245. Useruser=newUser();246. user.setId(rs.getInt(id);247. user.setUsername(rs.getString(username);248. user.setPassword(rs.ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论