spring jdbc 绑定变量在 sql in 语句解决方案

Pom部分:

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-dbcp2</artifactId>
	<version>2.8.0</version>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.22</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>5.3.2</version>
</dependency>

Controller部分:

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

	@Autowired
	MyDao myDao;
	
	@GetMapping("/delete")
	public void test(HttpServletRequest request) throws Exception {
		String ids = request.getParameter("ids");
		return myDao.deleteInBatch(ids);
	}
	
}

Dao部分:

import java.util.ArrayList;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class MyDao {

	@Autowired
	@Qualifier("Dbcp2DataSource")
	private DataSource dataSource;

	public int deleteInBatch(String ids) {
		MapSqlParameterSource param = new MapSqlParameterSource();
		NamedParameterJdbcTemplate npjt = new NamedParameterJdbcTemplate(dataSource);
		String sql = "DELETE FROM test WHERE id IN (:ids)";
		String[] split = ids.split(",");
		ArrayList<Long> idsList = new ArrayList<Long>();
		for (int i = 0; i < split.length; i++) {
			idsList.add(Long.parseLong(split[i]));
		}
		param.addValue("ids", idsList);
		int num = npjt.update(sql, param);
		return num;
	}

}

DataSource部分:

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyDataSource {

	@Bean("MyDbcp2DataSource")
	@ConfigurationProperties(prefix = "my.datasource")
	public DataSource getDataSource() {
		return DataSourceBuilder.create().type(BasicDataSource.class).build();
	}

}

Properties配置:

customize.datasource.url=jdbc:mysql://localhost:3306/szcste?serverTimezone=UTC
customize.datasource.username=root
customize.datasource.password=
customize.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐