/** * 新增用户 */ publicintinsertUser(User user) { Stringsql="INSERT INTO user (name, age, email) VALUES (?, ?, ?)"; return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getEmail()); } /** * 新增用户,封装自增主键 */ publicintinsertUserWithId(User user) { Stringsql="INSERT INTO user (name, age, email) VALUES (?, ?, ?)"; GeneratedKeyHolderkeyHolder=newGeneratedKeyHolder(); intinsertRow= jdbcTemplate.update(connection -> { PreparedStatementps= connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); ps.setString(1, user.getName()); ps.setInt(2, user.getAge()); ps.setString(3, user.getEmail()); return ps; }, keyHolder); user.setId(keyHolder.getKey().intValue()); return insertRow; } /** * 更新用户 */ publicintupdateUser(User user) { Stringsql="UPDATE user SET name = ?, age = ?, email = ? WHERE id = ?"; return jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getEmail(), user.getId()); } /** * 删除用户 */ publicintdeleteUserById(Integer id) { Stringsql="DELETE FROM user WHERE id = ?"; return jdbcTemplate.update(sql, id); }
4.2 普通查询
4.2.1 查询简单数据
常用方法:
java
1 2 3 4 5 6 7 8 9
public <T> T query(PreparedStatementCreator psc, @Nullablefinal PreparedStatementSetter pss, final ResultSetExtractor<T> rse)throws DataAccessException; // 查询单行简单数据 public <T> T queryForObject(String sql, Class<T> requiredType)throws DataAccessException; // 查询单行简单数据,支持传入参数 public <T> T queryForObject(String sql, Class<T> requiredType, @Nullable Object... args)throws DataAccessException; // 查询多行简单数据 public <T> List<T> queryForList(String sql, Class<T> elementType)throws DataAccessException; // 查询多行简单数据,支持传入参数 public <T> List<T> queryForList(String sql, Class<T> elementType, @Nullable Object... args)throws DataAccessException;
示例:
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/** * 查询用户总数 */ publicintselectUserCount() { Stringsql="SELECT COUNT(*) FROM user"; return jdbcTemplate.queryForObject(sql, Integer.class); } /** * 查询所有用户ID */ public List<Integer> selectAllUserIdList() { Stringsql="SELECT id FROM user ORDER BY id"; return jdbcTemplate.queryForList(sql, Integer.class); }
4.2.2 查询对象数据
常用方法:
java
1 2 3 4 5 6 7 8
// 查询单行对象数据 public <T> T queryForObject(String sql, RowMapper<T> rowMapper)throws DataAccessException; // 查询单行对象数据,支持传入参数 public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args)throws DataAccessException; // 查询多行对象数据 public <T> List<T> query(String sql, RowMapper<T> rowMapper)throws DataAccessException; // 查询多行对象数据,支持传入参数 public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)throws DataAccessException;
/** * 根据ID查询用户 */ public User selectUserById(Integer id) { Stringsql="SELECT * FROM user WHERE id = ?"; return jdbcTemplate.queryForObject(sql, (resultSet, i) -> { Useruser=newUser(); user.setId(resultSet.getInt("id")); user.setName(resultSet.getString("name")); user.setAge(resultSet.getInt("age")); user.setEmail(resultSet.getString("email")); return user; }, id); } /** * 查询所有用户 */ public List<User> selectAllUserList() { Stringsql="SELECT * FROM user ORDER BY id"; return jdbcTemplate.query(sql, newBeanPropertyRowMapper<>(User.class)); }
4.2.3 查询Map数据
常用方法:
java
1 2 3 4 5 6 7 8
// 查询单行Map数据 public Map<String, Object> queryForMap(String sql)throws DataAccessException; // 查询单行Map数据,支持传入参数 public Map<String, Object> queryForMap(String sql, @Nullable Object... args)throws DataAccessException; // 查询多行Map数据 public List<Map<String, Object>> queryForList(String sql)throws DataAccessException; // 查询多行Map数据,支持传入参数 public List<Map<String, Object>> queryForList(String sql, @Nullable Object... args)throws DataAccessException;
示例:
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/** * 根据ID查询用户信息 */ public Map<String, Object> selectUserInfoById(Integer id) { Stringsql="SELECT id, name FROM user WHERE id = ?"; return jdbcTemplate.queryForMap(sql, id); } /** * 查询所有用户信息 */ public List<Map<String, Object>> selectUserInfoList() { Stringsql="SELECT id, name FROM user ORDER BY id"; return jdbcTemplate.queryForList(sql); }
4.3 批量更新
对应批量增删改操作。
常用方法:
java
1 2
// 批量更新数据,返回影响的行数数组 publicint[] batchUpdate(String sql, final BatchPreparedStatementSetter pss) throws DataAccessException;
条