1. Java SQL body传值

Java SQL中可以使用占位符来传递值,主要有两种方式:

(1)使用PreparedStatement类

PreparedStatement类可以预编译SQL语句,并且可以使用占位符来传递值,这样可以避免SQL注入攻击。

示例代码:

String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "admin"); ps.setString(2, "123456"); ResultSet rs = ps.executeQuery();

(2)使用NamedParameterJdbcTemplate类

NamedParameterJdbcTemplate类可以使用命名参数来传递值,这样可以提高代码的可读性和可维护性。

示例代码:

String sql = "SELECT * FROM user WHERE username = :username AND password = :password"; Map<String, String> paramMap = new HashMap<>(); paramMap.put("username", "admin"); paramMap.put("password", "123456"); NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource); List users = jdbcTemplate.query(sql, paramMap, new BeanPropertyRowMapper<>(User.class));

  1. SQL使用占位符来实现排序

SQL中可以使用占位符来实现排序,主要有两种方式:

(1)使用ORDER BY子句

ORDER BY子句可以按照指定的列进行排序,可以使用占位符来指定列名。

示例代码:

String sql = "SELECT * FROM user ORDER BY ? DESC"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "username"); ResultSet rs = ps.executeQuery();

(2)使用CASE WHEN语句

CASE WHEN语句可以根据条件返回不同的值,可以使用占位符来指定条件。

示例代码:

String sql = "SELECT * FROM user ORDER BY CASE ? WHEN 'username' THEN username WHEN 'age' THEN age END DESC"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "username"); ResultSet rs = ps.executeQuery()


原文地址: https://www.cveoy.top/t/topic/fe7b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录