日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。