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

資訊專欄INFORMATION COLUMN

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

yhaolpz / 3134人閱讀

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

環(huán)境 版本信息

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

配置信息

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


    

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


    

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

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

本文章中的所有案例都是根據(jù)以下類來試驗的:

    public class User {
        private int id;
        private String userName;
        private String sex;
        private String password;
        private String address;
            //省略 set/get
    }
簡單操作數(shù)據(jù) 查詢 查詢一條數(shù)據(jù) 傳入?yún)?shù)是基本數(shù)據(jù)類型的map時
    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ù)是對象時
    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);
    }
查詢多條數(shù)據(jù) 普通查詢
    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;
    }
模糊查詢
    public List selectUserLikeByName(String name) {
        //"%"空格:userName空格"%" 一定要有空格,不然會報錯
        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)行對比,這樣就能發(fā)現(xiàn)當(dāng)占位符比較多的情況下傳入對象時多么的方便

刪除數(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77115.html

相關(guān)文章

  • 擁抱 NamedParameterJdbcTemplate

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

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

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

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

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

    Moxmi 評論0 收藏0
  • Spring Boot 框架介紹和使用

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

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

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

    linkFly 評論0 收藏0

發(fā)表評論

0條評論

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