成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

擁抱 NamedParameterJdbcTemplate

cfanr / 2783人閱讀

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

為什么要使用 NamedParameterJdbcTemplate

簡單

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

NamedParameterJdbcTemplate 支持對象自動映射,如下一段代碼NamedParameterJdbcTemplate 會自動將返回結(jié)果映射為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只是實現(xiàn)了命名參數(shù)及數(shù)據(jù)封裝,沒有其它任何額外的開銷,在運行效率上無限接近原生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自動綁定SQL參數(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})
通過主鍵查詢對象(自動映射) NamedParameterJdbcTemplate
String sql = "select * from t_person where id=:id";
jdbcOperations.queryForObject(sql, new MapSqlParameterSource("id", id), new BeanPropertyRowMapper<>(Person.class));

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

MyBatis
通過主鍵查詢對象(手動映射) 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

    
    
    
    
    
    
    
    
    
    
    


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

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/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 評論0 收藏0
  • Spring Boot 參考指南(安裝CLI)

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

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

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

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

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

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

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

    zebrayoung 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<