摘要:插入一條數據并返回自增主鍵我們可以通過自動綁定參數只需要屬性名稱為命名參數相同即可,同時我們也可以使用綁定參數。
為什么要使用 NamedParameterJdbcTemplate
簡單
NamedParameterJdbcTemplate 支持命名參數,這是原生jdbc的一大缺點,因為jdbc是采用索引的方式設置參數,在數據庫或者sql發現變化時我們需要修改代碼,并且這種維護成本很高,同時也很容易出錯,那命名參數可以很好的解決這個問題。
NamedParameterJdbcTemplate 支持對象自動映射,如下一段代碼NamedParameterJdbcTemplate 會自動將返回結果映射為Person對象
Person p = new Person(); p.setName("kevin"); p.setAddress("Shanghai"); p.setCountry("China"); namedTemplate.update("insert into t_person(name, address, country) values(:name,:address,:country)", new BeanPropertySqlParameterSource(p))
快速,NamedParameterJdbcTemplate只是實現了命名參數及數據封裝,沒有其它任何額外的開銷,在運行效率上無限接近原生jdbc
接下來我們看一下使用NamedParameterJdbcTemplate如何工作,還有相同場景下MyBatis的代碼。
插入一條數據并返回自增主鍵 NamedParameterJdbcTemplateString sql = "INSERT INTO `t_person` (firstName, lastName, age, gender, height, weight, address, hobby, createdTime)" + " VALUES (:firstName, :lastName, :age, :gender, :height, :weight, :address, :hobby, :createdTime)"; KeyHolder key = new GeneratedKeyHolder(); jdbcOperations.update(sql, new BeanPropertySqlParameterSource(p), key); p.setId(key.getKey().longValue());
我們可以通過BeanPropertySqlParameterSource自動綁定SQL參數只需要屬性名稱為命名參數相同即可,同時我們也可以使用MapSqlParameterSource/Map綁定SQL參數。
MyBatis通過主鍵查詢對象(自動映射) NamedParameterJdbcTemplateINSERT INTO `t_person` (firstName, lastName, age, gender, height, weight, address, hobby, createdTime) VALUES (#{firstName}, #{lastName}, #{age}, #{gender}, #{height}, #{weight}, #{address}, #{hobby}, #{createdTime})
String sql = "select * from t_person where id=:id"; jdbcOperations.queryForObject(sql, new MapSqlParameterSource("id", id), new BeanPropertyRowMapper<>(Person.class));
我們可以通過BeanPropertyRowMapper將返回結果自動映射為對象類型,和mybatis一樣只需要返回的列名與屬性名稱相同即可
MyBatis 通過主鍵查詢對象(手動映射) NamedParameterJdbcTemplateString sql = "select * from t_person where id=:id"; jdbcOperations.queryForObject(sql, new MapSqlParameterSource("id", selectId()), (rs, rowNum) -> { Person p = new Person(); p.setId(rs.getLong("id")); p.setFirstName(rs.getString("firstName")); p.setLastName(rs.getString("lastName")); p.setAge(rs.getInt("age")); p.setGender(rs.getInt("gender")); p.setHeight(rs.getInt("height")); p.setWeight(rs.getInt("weight")); p.setAddress(rs.getString("address")); p.setHobby(rs.getString("hobby")); p.setCreatedTime(rs.getLong("createdTime")); return p; });MyBatis
查詢多個對象 NamedParameterJdbcTemplate
String sql = "select * from t_person"; jdbcOperations.query(sql, EmptySqlParameterSource.INSTANCE, new BeanPropertyRowMapper<>(Person.class));MyBatis
通過上面的代碼我們可以發現使用NamedParameterJdbcTemplate操作數據庫非常的容易,不會給開發帶來額外的負擔,代碼非常的簡潔,同時程序的運行效率也非常的高。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66914.html
摘要:批量操作數據批量操作數據一共有兩種方法批量添加方法一男男方法二男男批量修改方法一男男方法二男男批量刪除同上 環境 版本信息 spring的版本為4.1.4(spring3我也用過,就配置信息略有不同,其用法還是一樣的) 配置信息 需要在applicationContext.xml中配置以下信息 如果已經在文件中配置了jdbctemplate的話還可以使用以下方法配置 ...
摘要:安裝可以使用手動安裝命令行接口或如果你是用戶,可以使用或。有關全面的安裝說明,請參閱開始部分中的第節,安裝。推斷抓取依賴項標準包含一個注解,它允許你聲明對第三方庫的依賴關系,這個有用的技術讓可以像或那樣下載,但不需要你使用構建工具。 第VII章. Spring Boot CLI 如果你想快速開發Spring應用程序,可以使用Spring Boot CLI命令行工具,它允許你運行Groo...
摘要:如何更高效的實現資源合理調度和復用如何彈性使用云原生來保障瞬時業務增長如何基于構建安全的技術中臺,為傳統行業賦能月日上海技術開放日構建云原生,擁抱新增長將深度解讀各企業在不同場景下的痛點,如何通過云原生的技術實現創新升級。Kubernetes如何更高效的實現資源合理調度和復用?如何彈性使用云原生來保障瞬時業務增長?如何基于K8S構建安全的技術中臺,為傳統行業賦能?9月11日·上海 UCan技...
摘要:微軟雅黑宋體如何更高效的實現資源合理調度和復用如何彈性使用云原生來保障瞬時業務增長如何基于構建安全的技術中臺,為傳統行業賦能微軟雅黑宋體? Kubernetes如何更高效的實現資源合理調度和復用?如何彈性使用云原生來保障瞬時業務增長?如何基于K8S構建安全的技術中臺,為傳統行業賦能? 9月11日·上海 UCan技術開放日構建云原生,擁抱新增長將深度解讀各企業在不同場景下的痛點,如何通...
摘要:擁抱未來的布局方式與布局全教程本書系列文章為對中布局與布局的詳細介紹,已在同步更新,如您在閱讀過程中發現描述有誤或錯別字的情況,您可以向本項目提出或。主要是對于標準里的布局方式草案中的布局方式進行一些總結。 GitBook《擁抱未來的CSS布局方式:flex與grid布局》全教程 本書(系列文章)為對CSS中flex布局與grid布局的詳細介紹,已在GitHub同步更新,如您在閱讀過程...
閱讀 1993·2021-11-24 10:45
閱讀 1850·2021-10-09 09:43
閱讀 1291·2021-09-22 15:38
閱讀 1219·2021-08-18 10:19
閱讀 2837·2019-08-30 15:55
閱讀 3057·2019-08-30 12:45
閱讀 2962·2019-08-30 11:25
閱讀 356·2019-08-29 11:30