日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring JDBC的学习

發(fā)布時(shí)間:2023/12/3 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring JDBC的学习 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 介紹
  • 使用步驟
  • 常用方法
  • 示例代碼

介紹

所謂 Spring JDBC,是 Spring 框架對(duì) JDBC 的簡(jiǎn)單封裝。提供了一個(gè) JdbcTemplate 對(duì)象簡(jiǎn)化 JDBC 的開(kāi)發(fā)。

使用步驟

步驟:
1.導(dǎo)入相關(guān)的 jar 包

2.創(chuàng)建 JdbcTemplate 對(duì)象,依賴于數(shù)據(jù)源 DataSource

JdbcTemplate template = new JdbcTemplate(ds);

3.調(diào)用 JdbcTemplate 的方法來(lái)完成 CRUD 的操作

常用方法

1.update():執(zhí)行 DML 語(yǔ)句。增、刪、改語(yǔ)句

2.queryForMap() :將結(jié)果集封裝為Map集合返回,并且查詢結(jié)果只能返回一條記錄,即結(jié)果集的長(zhǎng)度只能是 1,沒(méi)有記錄返回或者返回多條記錄都會(huì)報(bào)錯(cuò)。
查詢的數(shù)據(jù)記錄的列名作為 key,列的值作為 value,保存在 Map 集合中

3.queryForList():將結(jié)果集封裝為L(zhǎng)ist集合返回,可以查詢一條或者多條記錄。一條記錄封裝成一個(gè) Map 對(duì)象,再把 Map 對(duì)象保存在 List 集合對(duì)象中

4.query():將結(jié)果封裝為JavaBean對(duì)象集合。將每條記錄封裝成 JavaBean 對(duì)象,然后裝載入集合中,并返回這個(gè)集合。

query的參數(shù)類型:RowMapper
一般我們使用 BeanPropertyRowMapper 實(shí)現(xiàn)類。 可以完成數(shù)據(jù)到 JavaBean 對(duì)象集合的自動(dòng)封裝

new BeanPropertyRowMapper<類型>(類型.class)

5.queryForObject :將結(jié)果封裝為對(duì)象,一般用于聚合函數(shù)的查詢

示例代碼

package priv.lwx.javaex.jdbctemplate;import org.junit.Test; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import priv.lwx.javaex.datasource.util.JdbcUtils; import priv.lwx.javaex.jdbctemplate.entity.Emp;import java.math.BigDecimal; import java.sql.Date; import java.util.List; import java.util.Map;/*** 使用單元測(cè)工具Junit來(lái)測(cè)試JdbcTemplate的CRUD** @author liaowenxiong* @date 2021/11/18 22:55*/public class JdbcTemplateDemo02 {// 1.獲取JdbcTemplate對(duì)象JdbcTemplate jtpt = new JdbcTemplate(JdbcUtils.getDataSource());/*** 更新數(shù)據(jù)** @author liaowenxiong* @date 2021/11/19 10:56*/@Testpublic void test1() {// 2.定義SQL語(yǔ)句String sql = "update Emp set salary = 10000 where id = 1";// 3.執(zhí)行SQL語(yǔ)句int i = jtpt.update(sql);}/*** 插入數(shù)據(jù)** @author liaowenxiong* @date 2021/11/19 10:56*/@Testpublic void test2() {// 2.定義SQL語(yǔ)句String sql = "INSERT INTO user(id, account_name, PASSWORD) values (?,?,?)";// 3.執(zhí)行SQL語(yǔ)句int i = jtpt.update(sql, null, "wujie", "567");System.out.println(i);}/*** 查詢某條記錄** @author liaowenxiong* @date 2021/11/19 10:52*/@Testpublic void test3() {// 定義SQL語(yǔ)句String sql = "select * from emp where id = ?";// 執(zhí)行SQL語(yǔ)句Map<String, Object> map = jtpt.queryForMap(sql, 1);System.out.println(map);}/*** 查詢多條記錄,返回一個(gè)List集合,集合中存放每條記錄對(duì)應(yīng)的Map對(duì)象** @author liaowenxiong* @date 2021/11/19 10:52*/@Testpublic void test4() {// 定義SQL語(yǔ)句String sql = "select * from emp";// 執(zhí)行SQL語(yǔ)句List<Map<String, Object>> list = jtpt.queryForList(sql);for (Map<String, Object> map : list) {System.out.println(map);}// System.out.println(list);}/*** 查詢多條記錄,將每條記錄映射成JavaBean對(duì)象,并將JavaBean對(duì)象裝載到List中,返回該List* @author liaowenxiong* @date 2021/11/19 23:00*/@Testpublic void test5() {// 定義SQL語(yǔ)句String sql = "select * from emp";// 執(zhí)行SQL語(yǔ)句List<Emp> emps = jtpt.query(sql, (rs, i) ->{int id = rs.getInt("id");String name = rs.getString("name");int job_id = rs.getInt("job_id");int mgr = rs.getInt("mgr");Date hiredate = rs.getDate("hiredate");BigDecimal salary = rs.getBigDecimal("salary");BigDecimal bonus = rs.getBigDecimal("bonus");int dept_id = rs.getInt("dept_id");Emp emp = new Emp();emp.setId(id);emp.setName(name);emp.setJob_id(job_id);emp.setMgr(mgr);emp.setHiredate(hiredate);emp.setSalary(salary);emp.setBonus(bonus);emp.setDept_id(dept_id);return emp;});for (Emp emp : emps) {System.out.println(emp);}}/*** 使用RowMapper的實(shí)現(xiàn)類BeanPropertyRowMapper完成自動(dòng)封裝* @author liaowenxiong* @date 2021/11/19 22:53*/@Testpublic void test6() {// 定義SQL語(yǔ)句String sql = "select * from emp";// 執(zhí)行SQL語(yǔ)句List<Emp> emps = jtpt.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));for (Emp emp : emps) {System.out.println(emp);}}/*** 查詢emp表中總的記錄數(shù)* @author liaowenxiong* @date 2021/11/19 22:59*/@Testpublic void test7() {// 定義SQL語(yǔ)句String sql = "select count(id) from emp";// 執(zhí)行SQL語(yǔ)句// 希望將查詢結(jié)果封裝成什么類型,就傳遞什么類型的Class對(duì)象Integer i = jtpt.queryForObject(sql, Integer.class);System.out.println(i);}}

總結(jié)

以上是生活随笔為你收集整理的Spring JDBC的学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品一区二三区四区五区 | 五月色丁香 | 天天黄色片 | www.av在线免费观看 | 日韩天堂在线观看 | 网站一级片 | 五月天堂婷婷 | 成人高潮片 | 波多野结衣一区二区三区在线 | 直接看的毛片 | 国产精品国产三级国产三级人妇 | 成人三级视频 | 亚洲免费在线视频观看 | 国内偷拍一区二区 | 久久久成人免费视频 | 51国产在线 | 中国黄色免费网站 | www久久久天天com | 91精品色 | 国产97av| 免费成人电影在线观看 | 69久久久久 | 青青啪啪| 日本一区二区网站 | 夫妻性生活黄色大片 | 国产激情av一区二区三区 | 精品人妻少妇嫩草av无码专区 | 高h全肉污文play带道具 | 天天干夜夜怕 | 一区二区不卡av | 亚洲AV无码成人精品国产一区 | 亚洲一级中文字幕 | 熟女少妇一区二区三区 | 琪琪色综合 | 天天插天天操天天干 | 日日骑| 黄色大全在线观看 | 少妇高潮惨叫久久久久 | 二区三区偷拍浴室洗澡视频 | av免费久久 | 日韩小视频网站 | 先锋影音一区二区三区 | 国产一区日韩一区 | 国产精品1区2区3区4区 | 午夜免费影院 | 国产影视一区 | 樱花视频在线免费观看 | 97视频久久 | 久久久久久亚洲av毛片大全 | 国精产品一区一区三区 | 美女福利在线观看 | 美国黄色一级视频 | 国产亚洲精久久久久久无码苍井空 | 日本公与丰满熄 | 麻豆视频传媒入口 | 中文在线8资源库 | 91手机视频在线观看 | 男人操女人免费网站 | 免费成人福利视频 | 国产视频一区二区三区四区五区 | av一区二区三区四区 | 人妻视频一区二区 | wwww日本60 | 亚洲性猛交xxxx乱大交 | 日韩无| 综合精品一区 | 人妻少妇精品无码专区 | 亚洲精品乱码久久久久久不卡 | ass极品国模人体欣赏 | 91精品国产乱码久久久久久久久 | 亚洲天堂视频在线播放 | 污污在线看 | 91国内| 俺也去av | 国产精品免费一区二区 | 日本一二三区视频 | 美女屁股眼视频免费 | 在线播放av网站 | 伊人久久综合视频 | 全肉的吸乳文 | 亚洲欧美黄 | 日本一卡二卡在线 | 大胸美女无遮挡 | 麻豆精品一区二区 | 中文字幕在线视频免费 | 神马午夜一区二区 | 欧美视频在线一区二区三区 | 午夜欧美视频 | av黄色在线播放 | 神马伦理影视 | 国模在线视频 | 一卡二卡三卡在线 | 日本亚洲一区二区 | 精品一区av | 色偷偷五月天 | 2019毛片| 精品人妻一区二区三区换脸明星 | 天天操天天干天天摸 | 一级特黄aa大片 |