Java SQL 占位符传值和排序:详解及示例
- 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));
- 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/n7jd 著作权归作者所有。请勿转载和采集!