NamedParameterJdbcTemplate 处理 in 查询条件

如果在执行的SQL中需要用到 in ,则建议使用 NamedParameterJdbcTemplate  进行处理。

public NamedParameterJdbcTemplate(DataSource dataSource) 
public NamedParameterJdbcTemplate(JdbcOperations classicJdbcTemplate)

JdbcOperations 是一个接口, 常用的 JdbcTemplate 就是 实现了这个接口,所以我正可以正常的使用 JdbcTemplate 进行 构造 NamedParameterJdbcTemplate

 SQL的形式 :select * from t_user where id in (:ids);

传入的ids 为 List 类型。

// id 集合
        List<Integer> ids = new ArrayList<>();
        ids.add(3);
        ids.add(1);
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        // 传参
        parameters.addValue("ids", ids);

第一种方式:

@Autowired
    private JdbcTemplate jdbcTemplate;

    @GetMapping("/queryUsersByIds")
    @ApiOperation(value = "查询用户列表")
    public List<User> queryUsersByIds() {
        String sql = "select * from t_user where id in (:ids);";
        // id 集合
        List<Integer> ids = new ArrayList<>();
        ids.add(3);
        ids.add(1);
        MapSqlParameterSource parameters = new MapSqlParameterSource();
        // 传参
        parameters.addValue("ids", ids);
        NamedParameterJdbcTemplate givenParamJdbcTemp = new NamedParameterJdbcTemplate(jdbcTemplate);
        List<User> data = givenParamJdbcTemp.query(sql, parameters, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                // TODO Auto-generated method stub
                User user = new User();
                user.setId(rs.getLong("id"));
                user.setUserName(rs.getString("user_name"));
                user.setRemark(rs.getString("remark"));
                return user;
            }

第二种方式:


	@Component
	public class HealthcheckDao {
		
		@Resource(name="namedParameterJdbcTemplate")
		private NamedParameterJdbcTemplate jdbcN;
		
		/**
		 * private JdbcTemplate jdbcT;
		 * @param List<String> idList
		 * @param  参数说明
		 */
		public void batchUpdate(List<String> idList){
		String sql = "update table_name set del_flag = '0' where uuid in (:ids)";
		try {
          //参数必须要用jdbc提供的 MapSqlParameterSource.addValue(String arg0 ,Object value)方法添加
		    MapSqlParameterSource parameters = new MapSqlParameterSource();
		    parameters.addValue("ids", idList);
		    
		    int n = jdbcN.update(sql, parameters);
		  
		} catch (DataAccessException e) {
			e.printStackTrace();
		}
	}  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值