1. Java SQL 传值

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<User> 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();
Java SQL 占位符传值和排序:详解及示例

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

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