NamedParameterJdbcTemplate传参的n种写法

本文详细介绍了如何使用Spring框架中的NamedParameterJdbcTemplate进行数据库操作,包括参数化查询、插入、更新、获取主键、返回单个对象及处理IN条件等。通过具体的代码示例,展示了多种传参方式,如Map、SqlParameterSource和JavaBean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

没啥技术含量,烂笔头记下来备查!
数据库
在这里插入图片描述

    /**
     * NamedParameterJdbcTemplate
     * 
     * @see [类、类#方法、类#成员]
     */
    @Test
    public void testNamedTemplate()
    {
        String sql;
        List<Map<String, Object>> list;
        
        // 单条件
        sql = "select id, name from student where id<>:id";
        list = namedJdbcTemplate.queryForList(sql, Collections.singletonMap("id", 5));
        logger.info("★★★★ execute: {} ==> {}", sql, list);
        
        // Map传多条件-写法1
        sql = "insert into student(id, name) values(:id, :name)";
        Map<String, Object> params = new HashMap<>();
        params.put("id", 4);
        params.put("name", RandomStringUtils.randomAlphabetic(5));
        int count = namedJdbcTemplate.update(sql, params);
        System.out.println(count);
        
        // SqlParameterSource传多条件-写法2
        sql = "insert into student(id, name) values(:id, :name)";
        SqlParameterSource parameterSource = new MapSqlParameterSource("id", 20).addValue("name", RandomStringUtils.randomAlphabetic(5));
        count = namedJdbcTemplate.update(sql, parameterSource);
        System.out.println(count);
        
        // Java Bean传条件-写法3
        StudentVO vo = new StudentVO();
        vo.setId(5);
        vo.setName(RandomStringUtils.randomAlphabetic(5));
        SqlParameterSource source = new BeanPropertySqlParameterSource(vo);
        count = namedJdbcTemplate.update(sql, source);
        System.out.println(count);
        
        // 查询主键
        vo.setId(6);
        KeyHolder keyHolder = new GeneratedKeyHolder();
        namedJdbcTemplate.update(sql, source, keyHolder);
        String pk = String.valueOf(keyHolder.getKey());
        logger.info("★★★★ pk ==> {}", pk);
        
        // 返回单个对象
        sql = "select id, name from student where id=:id";
        vo = new StudentVO();
        vo.setId(4);
        source = new BeanPropertySqlParameterSource(vo);
        rowMapper = new BeanPropertyRowMapper<>(StudentVO.class);
        StudentVO studentVO = namedJdbcTemplate.queryForObject(sql, source, rowMapper);
        System.out.println(studentVO);
        
        // IN条件
        sql = "select id, name from student where id in (:ids)";
        list = namedJdbcTemplate.queryForList(sql, Collections.singletonMap("ids", Arrays.asList(1, 2, 3, 4, 5)));
        System.out.println(list);
    }

完整项目代码参考: https://gitee.com/00fly/java-code-frame/tree/master/springmvc-jpa-query

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值