国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

擁抱 NamedParameterJdbcTemplate

cfanr / 2784人閱讀

摘要:插入一條數(shù)據(jù)并返回自增主鍵我們可以通過自動(dòng)綁定參數(shù)只需要屬性名稱為命名參數(shù)相同即可,同時(shí)我們也可以使用綁定參數(shù)。

為什么要使用 NamedParameterJdbcTemplate

簡單

NamedParameterJdbcTemplate 支持命名參數(shù),這是原生jdbc的一大缺點(diǎn),因?yàn)?b>jdbc是采用索引的方式設(shè)置參數(shù),在數(shù)據(jù)庫或者sql發(fā)現(xiàn)變化時(shí)我們需要修改代碼,并且這種維護(hù)成本很高,同時(shí)也很容易出錯(cuò),那命名參數(shù)可以很好的解決這個(gè)問題。

NamedParameterJdbcTemplate 支持對(duì)象自動(dòng)映射,如下一段代碼NamedParameterJdbcTemplate 會(huì)自動(dòng)將返回結(jié)果映射為Person對(duì)象

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只是實(shí)現(xiàn)了命名參數(shù)及數(shù)據(jù)封裝,沒有其它任何額外的開銷,在運(yùn)行效率上無限接近原生jdbc

接下來我們看一下使用NamedParameterJdbcTemplate如何工作,還有相同場景下MyBatis的代碼。

插入一條數(shù)據(jù)并返回自增主鍵 NamedParameterJdbcTemplate
String 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自動(dòng)綁定SQL參數(shù)只需要屬性名稱為命名參數(shù)相同即可,同時(shí)我們也可以使用MapSqlParameterSource/Map綁定SQL參數(shù)。

MyBatis

    INSERT INTO `t_person` (firstName, lastName, age, gender, height, weight, address, hobby, createdTime)
    VALUES (#{firstName}, #{lastName}, #{age}, #{gender}, #{height}, #{weight}, #{address}, #{hobby}, #{createdTime})
通過主鍵查詢對(duì)象(自動(dòng)映射) NamedParameterJdbcTemplate
String sql = "select * from t_person where id=:id";
jdbcOperations.queryForObject(sql, new MapSqlParameterSource("id", id), new BeanPropertyRowMapper<>(Person.class));

我們可以通過BeanPropertyRowMapper將返回結(jié)果自動(dòng)映射為對(duì)象類型,和mybatis一樣只需要返回的列名與屬性名稱相同即可

MyBatis
通過主鍵查詢對(duì)象(手動(dòng)映射) NamedParameterJdbcTemplate
String 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

    
    
    
    
    
    
    
    
    
    
    


查詢多個(gè)對(duì)象 NamedParameterJdbcTemplate
String sql = "select * from t_person";
jdbcOperations.query(sql, EmptySqlParameterSource.INSTANCE, new BeanPropertyRowMapper<>(Person.class));
MyBatis

通過上面的代碼我們可以發(fā)現(xiàn)使用NamedParameterJdbcTemplate操作數(shù)據(jù)庫非常的容易,不會(huì)給開發(fā)帶來額外的負(fù)擔(dān),代碼非常的簡潔,同時(shí)程序的運(yùn)行效率也非常的高。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/66914.html

相關(guān)文章

  • NamedParameterJdbcTemplate學(xué)習(xí)總結(jié)

    摘要:批量操作數(shù)據(jù)批量操作數(shù)據(jù)一共有兩種方法批量添加方法一男男方法二男男批量修改方法一男男方法二男男批量刪除同上 環(huán)境 版本信息 spring的版本為4.1.4(spring3我也用過,就配置信息略有不同,其用法還是一樣的) 配置信息 需要在applicationContext.xml中配置以下信息 如果已經(jīng)在文件中配置了jdbctemplate的話還可以使用以下方法配置 ...

    yhaolpz 評(píng)論0 收藏0
  • Spring Boot 參考指南(安裝CLI)

    摘要:安裝可以使用手動(dòng)安裝命令行接口或如果你是用戶,可以使用或。有關(guān)全面的安裝說明,請(qǐng)參閱開始部分中的第節(jié),安裝。推斷抓取依賴項(xiàng)標(biāo)準(zhǔn)包含一個(gè)注解,它允許你聲明對(duì)第三方庫的依賴關(guān)系,這個(gè)有用的技術(shù)讓可以像或那樣下載,但不需要你使用構(gòu)建工具。 第VII章. Spring Boot CLI 如果你想快速開發(fā)Spring應(yīng)用程序,可以使用Spring Boot CLI命令行工具,它允許你運(yùn)行Groo...

    Moxmi 評(píng)論0 收藏0
  • 9月11日·上海 UCan技術(shù)開放日-“構(gòu)建云原生,擁抱新增長”交流會(huì)報(bào)名參會(huì)及預(yù)約直播入口

    摘要:如何更高效的實(shí)現(xiàn)資源合理調(diào)度和復(fù)用如何彈性使用云原生來保障瞬時(shí)業(yè)務(wù)增長如何基于構(gòu)建安全的技術(shù)中臺(tái),為傳統(tǒng)行業(yè)賦能月日上海技術(shù)開放日構(gòu)建云原生,擁抱新增長將深度解讀各企業(yè)在不同場景下的痛點(diǎn),如何通過云原生的技術(shù)實(shí)現(xiàn)創(chuàng)新升級(jí)。Kubernetes如何更高效的實(shí)現(xiàn)資源合理調(diào)度和復(fù)用?如何彈性使用云原生來保障瞬時(shí)業(yè)務(wù)增長?如何基于K8S構(gòu)建安全的技術(shù)中臺(tái),為傳統(tǒng)行業(yè)賦能?9月11日·上海 UCan技...

    Tecode 評(píng)論0 收藏0
  • 9月11日·上海 UCan技術(shù)開放日-“構(gòu)建云原生,擁抱新增長”交流會(huì)報(bào)名參會(huì)及預(yù)約直播入口

    摘要:微軟雅黑宋體如何更高效的實(shí)現(xiàn)資源合理調(diào)度和復(fù)用如何彈性使用云原生來保障瞬時(shí)業(yè)務(wù)增長如何基于構(gòu)建安全的技術(shù)中臺(tái),為傳統(tǒng)行業(yè)賦能微軟雅黑宋體? Kubernetes如何更高效的實(shí)現(xiàn)資源合理調(diào)度和復(fù)用?如何彈性使用云原生來保障瞬時(shí)業(yè)務(wù)增長?如何基于K8S構(gòu)建安全的技術(shù)中臺(tái),為傳統(tǒng)行業(yè)賦能? 9月11日·上海 UCan技術(shù)開放日構(gòu)建云原生,擁抱新增長將深度解讀各企業(yè)在不同場景下的痛點(diǎn),如何通...

    Yumenokanata 評(píng)論0 收藏0
  • GitBook《擁抱未來的CSS布局方式:flex與grid布局》全教程

    摘要:擁抱未來的布局方式與布局全教程本書系列文章為對(duì)中布局與布局的詳細(xì)介紹,已在同步更新,如您在閱讀過程中發(fā)現(xiàn)描述有誤或錯(cuò)別字的情況,您可以向本項(xiàng)目提出或。主要是對(duì)于標(biāo)準(zhǔn)里的布局方式草案中的布局方式進(jìn)行一些總結(jié)。 GitBook《擁抱未來的CSS布局方式:flex與grid布局》全教程 本書(系列文章)為對(duì)CSS中flex布局與grid布局的詳細(xì)介紹,已在GitHub同步更新,如您在閱讀過程...

    zebrayoung 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<