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

資訊專(zhuān)欄INFORMATION COLUMN

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

yhaolpz / 3102人閱讀

摘要:批量操作數(shù)據(jù)批量操作數(shù)據(jù)一共有兩種方法批量添加方法一男男方法二男男批量修改方法一男男方法二男男批量刪除同上

環(huán)境 版本信息

spring的版本為4.1.4(spring3我也用過(guò),就配置信息略有不同,其用法還是一樣的)

配置信息

需要在applicationContext.xml中配置以下信息


    

如果已經(jīng)在文件中配置了jdbctemplate的話(huà)還可以使用以下方法配置


    

當(dāng)然也可以使用最原始的方法(該方法也需要配置jdbctemplate)

NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
持久化類(lèi)

本文章中的所有案例都是根據(jù)以下類(lèi)來(lái)試驗(yàn)的:

    public class User {
        private int id;
        private String userName;
        private String sex;
        private String password;
        private String address;
            //省略 set/get
    }
簡(jiǎn)單操作數(shù)據(jù) 查詢(xún) 查詢(xún)一條數(shù)據(jù) 傳入?yún)?shù)是基本數(shù)據(jù)類(lèi)型的map時(shí)
    public User selectUserById(String id) {
        String sql = "SELECT id,username,sex,password,address FROM user WHERE id = :id";
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        RowMapper rm = BeanPropertyRowMapper.newInstance(User.class);
        User user = namedParameterJdbcTemplate.queryForObject(sql, paramMap, rm);
        return user;
    }
傳入的參數(shù)是對(duì)象時(shí)
    public User queryByUser(User user) {
        String sql = "SELECT id,username,sex,password,address FROM user WHERE id = :id";
        SqlParameterSource ps = new BeanPropertySqlParameterSource(user);
        RowMapper rm = BeanPropertyRowMapper.newInstance(User.class);
        return namedParameterJdbcTemplate.queryForObject(sql, ps, rm);
    }
查詢(xún)多條數(shù)據(jù) 普通查詢(xún)
    public List selectUser() {
        String sql = "SELECT id,username,sex,password,address FROM user";
        Map paramMap = new HashMap();
        RowMapper rm = BeanPropertyRowMapper.newInstance(User.class);
        List userList = namedParameterJdbcTemplate.query(sql, rm);
        return userList;
    }
模糊查詢(xún)
    public List selectUserLikeByName(String name) {
        //"%"空格:userName空格"%" 一定要有空格,不然會(huì)報(bào)錯(cuò)
        String sql = "SELECT id,username,sex,password,address FROM user WHERE username LIKE "%" :userName "%"";
        Map paramMap = new HashMap();
        paramMap.put("userName", name);
        RowMapper rm = BeanPropertyRowMapper.newInstance(User.class);
        List users = namedParameterJdbcTemplate.query(sql, paramMap, rm);
        return users;
    }
添加數(shù)據(jù)
    public void insertUser(User user) {
        String sql = "INSERT INTO user (username, sex, password, address) VALUES (:username,:sex,:password,:address)";
        Map paramMap = new HashMap();
        paramMap.put("username", user.getUserName());
        paramMap.put("sex", user.getSex());
        paramMap.put("password", user.getPassword());
        paramMap.put("address", user.getAddress());
        namedParameterJdbcTemplate.update(sql, paramMap);
    }
修改數(shù)據(jù)
    public void updateUser(User user) {
        String sql = "UPDATE user SET username = :userName,sex = :sex,password=:password,address=:address WHERE id = :id;";
        SqlParameterSource ps = new BeanPropertySqlParameterSource(user);
        namedParameterJdbcTemplate.update(sql, ps);
    }

可以與添加數(shù)據(jù)再進(jìn)行對(duì)比,這樣就能發(fā)現(xiàn)當(dāng)占位符比較多的情況下傳入對(duì)象時(shí)多么的方便

刪除數(shù)據(jù)
    public void deleteUser(String id) {
        String sql = "DELETE FROM user WHERE id = :id";
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        namedParameterJdbcTemplate.update(sql, paramMap);
    }

看到此處可以發(fā)現(xiàn)添加,修改,刪除數(shù)據(jù)namedParameterJdbcTemplate提供的方法都是一樣的,都是update方法。

批量操作數(shù)據(jù)

批量操作數(shù)據(jù)一共有兩種方法

批量添加 方法一
    public void batchInsert() {
        User chen = new User("chen", "男", "123456789", "fuzhou");
        User alex = new User("alex", "男", "123456", "fuzhou");
        List userList = new ArrayList<>();
        userList.add(chen);
        userList.add(alex);
        List> batchValues = new ArrayList<>(userList.size());
        for (User user : userList) {
            batchValues.add(
                    new MapSqlParameterSource("username", user.getUserName())
                            .addValue("sex", user.getSex())
                            .addValue("password", user.getPassword())
                            .addValue("address", user.getAddress())
                            .getValues());
        }
        String sql = "INSERT INTO user (username, sex, password, address) VALUES (:username,:sex,:password,:address)";
        int[] updateCounts = namedParameterJdbcTemplate.batchUpdate(sql, batchValues.toArray(new Map[userList.size()]));
    }
方法二
    public void batchInsertUser() {
        User chen = new User("chen", "男", "123456789", "fuzhou");
        User alex = new User("alex", "男", "123456", "fuzhou");
        List userList = new ArrayList<>();
        userList.add(chen);
        userList.add(alex);
        String sql = "INSERT INTO user (username, sex, password, address) VALUES (:username,:sex,:password,:address)";
        SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(userList.toArray());
        int[] updateCounts = namedParameterJdbcTemplate.batchUpdate(sql, batch);
    }
批量修改 方法一
    public void batchUpdate() {
        User chen = new User(12,"chen", "男", "111111111", "fuzhou");
        User alex = new User(13,"alex", "男", "111111111", "fuzhou");
        List userList = new ArrayList<>();
        userList.add(chen);
        userList.add(alex);
        List> batchValues = new ArrayList<>(userList.size());
        for (User user : userList) {
            batchValues.add(
                    new MapSqlParameterSource("username", user.getUserName())
                            .addValue("id",user.getId())
                            .addValue("sex", user.getSex())
                            .addValue("password", user.getPassword())
                            .addValue("address", user.getAddress())
                            .getValues());
        }
        String sql = "UPDATE user SET username = :username,sex = :sex,password=:password,address=:address WHERE id = :id;";
        int[] updateCounts = namedParameterJdbcTemplate.batchUpdate(sql, batchValues.toArray(new Map[userList.size()]));
    }
方法二
    public void batchUpdateUser() {
        User chen = new User(14,"chen", "男", "111111111", "fuzhou");
        User alex = new User(15,"alex", "男", "111111111", "fuzhou");
        List userList = new ArrayList<>();
        userList.add(chen);
        userList.add(alex);
        String sql = "UPDATE user SET username = :username,sex = :sex,password=:password,address=:address WHERE id = :id;";
        SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(userList.toArray());
        int[] updateCounts = namedParameterJdbcTemplate.batchUpdate(sql, batch);
    }
批量刪除

同上

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

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

相關(guān)文章

  • 擁抱 NamedParameterJdbcTemplate

    摘要:插入一條數(shù)據(jù)并返回自增主鍵我們可以通過(guò)自動(dòng)綁定參數(shù)只需要屬性名稱(chēng)為命名參數(shù)相同即可,同時(shí)我們也可以使用綁定參數(shù)。 為什么要使用 NamedParameterJdbcTemplate 簡(jiǎn)單 NamedParameterJdbcTemplate 支持命名參數(shù),這是原生jdbc的一大缺點(diǎn),因?yàn)閖dbc是采用索引的方式設(shè)置參數(shù),在數(shù)據(jù)庫(kù)或者sql發(fā)現(xiàn)變化時(shí)我們需要修改代碼,并且這種維護(hù)...

    cfanr 評(píng)論0 收藏0
  • 關(guān)于 Spring JdbcTemplate 的一些總結(jié)

    摘要:關(guān)于的一些總結(jié)一個(gè)小問(wèn)題的思考起因當(dāng)前項(xiàng)目中一直使用的都是,即這種用法考慮到確實(shí)有一定的局限性,在部分查詢(xún)中使用到了進(jìn)行復(fù)雜查詢(xún)操作由于本人年也曾使用過(guò),古語(yǔ)溫故而知新,所以做此總結(jié)梳理。 關(guān)于 Spring JdbcTemplate 的一些總結(jié) 一個(gè)小問(wèn)題的思考 起因 當(dāng)前項(xiàng)目中一直使用的都是 SpringData JPA ,即 public interface UserReposi...

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

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

    Moxmi 評(píng)論0 收藏0
  • Spring Boot 框架介紹和使用

    摘要:使用還是,根據(jù)個(gè)人喜好即可。如果錯(cuò)誤頁(yè)面也需要使用模板引擎動(dòng)態(tài)生成,那么放在下面的路徑。數(shù)據(jù)庫(kù)自動(dòng)配置嵌入式數(shù)據(jù)庫(kù)如果類(lèi)路徑中包含或的相應(yīng)包,那么就會(huì)自動(dòng)配置這些嵌入式數(shù)據(jù)庫(kù)的實(shí)例和數(shù)據(jù)源。 本文參考自Spring Boot文檔。 Spring Boot 簡(jiǎn)介 Spring框架功能很強(qiáng)大,但是就算是一個(gè)很簡(jiǎn)單的項(xiàng)目,我們也要配置很多東西。因此就有了Spring Boot框架,它的作用很...

    Zack 評(píng)論0 收藏0
  • Python各熱門(mén)方向常用學(xué)習(xí)、工作網(wǎng)址大全【7000字大總結(jié)

    摘要:做這一領(lǐng)域的工作,有很多網(wǎng)站能夠起到輔助性的作用。再加上爬蟲(chóng)相對(duì)于其他熱門(mén)方向來(lái)說(shuō),更容易學(xué)。也促使更多人會(huì)優(yōu)先選擇學(xué)習(xí)爬蟲(chóng)。能夠代替手工完成手工無(wú)法完成的測(cè)試任務(wù),并且可以記錄相關(guān)數(shù)據(jù)及報(bào)告。 ...

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

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

0條評(píng)論

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