Spring query方法:用於JDBC查詢

2020-07-16 10:05:01
query 方法用於 JDBC 查詢,它有多種過載方法。

語法1

query(String sql,RowCallbackHandler rch)

引數說明:
  • sql:執行 JDBC 查詢的 SQL 語句。
  • rch:RowCallbackHandler 回撥介面的實現。

範例1

該方法使用 SQL 語句和 RowCallbackHandler 回撥介面處理查詢結果。

定義單使用者查詢方法,從資料庫中查詢指定 ID 編號的使用者,將查詢結果賦值給使用者實體類,關鍵程式碼如下:
public TbUser getUser(int id){
  final TbUser user = null;
  String sql = "select*from tb_user where id="+id;  //建立一條SQL語句
  getJdbcTemplate().query(sql,new RowCallbackHandler(){
    public void processRow(ResultSet rs)throws SQLException{
      user.setAge(rs.getInt("age"));
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      user.setSex(rs.getString("sex"));
    }
  });
  return user;
}

範例2

定義使用者查詢方法,從資料庫中查詢所有使用者,將查詢結果賦值給使用者實體物件並將所有實體物件新增到 List 集合中,關鍵程式碼如下:
public List getAllUsers(){
  final List list = new ArrayList();
  String sql = "select*from tb_user";  //建立一條SQL語句
  getJdbcTemplate().query(sql,new RowCallbackHandler(){
    public void processRow(ResultSet rs)throws SQLException{
      TbUser user = new TbUser();
      user.setAge(rs.getInt("age"));
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      user.setSex(rs.getString("sex"));
      list.add(user);
    }
  });
  return list;
}

語法2

query(String sql,Object[] args,RowCallbackHandler rch)

引數說明:
  • sql:執行 JDBC 查詢的 SQL 語句。
  • args:SQL 語句中對應的引數值陣列。
  • rch:RowCallbackHandler 回撥介面的實現。

範例

該方法使用 SQL 語句、引數和 RowCallbackHandler 回撥介面處理查詢結果。

本範例定義單使用者查詢方法,從資料庫中查詢指定 ID 編號和指定年齡的使用者,將查詢結果賦值給使用者實體類,關鍵程式碼如下:
public TbUser getUser(int id,int age){
  final TbUser user = null;
  String sql = "select*from tb_user where id=?and age=?";  //建立一條SQL語句
  Integer[] args = {id,age};
  getJdbcTemplate().query(sql,args,new RowCallbackHandler(){
    public void processRow(ResultSet rs)throws SQLException{
      user.setAge(rs.getInt("age"));
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      user.setSex(rs.getString("sex"));
    }
  });
  return user;
}

語法3

query(String sql,RowMapper rowMapper)

引數說明:
  • sql:執行 JDBC 查詢的 SQL 語句。
  • rowMapper:RowMapper 回撥介面的實現。

範例

該方法使用 SQL 語句、引數和 RowMapper 回撥介面處理查詢結果。

本範例定義使用者查詢方法,從資料庫中查詢所有使用者實體物件,關鍵程式碼如下:
public List getAllUsers(){
  String sql = "select*from tb_user";  //建立一條SQL語句
  List list = getJdbcTemplate().query(sql,new RowMapper(){
    public Object mapRow(ResultSet rs,int rowNum)throws SQLException{
      TbUser user = new TbUser();
      user.setAge(rs.getInt("age"));
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      user.setSex(rs.getString("sex"));
      return user;
    }
  });
  return list;
}

語法4

query(String sql,Object[] args,RowMapper rowMapper)

引數說明:
  • sql:執行 JDBC 查詢的 SQL 語句。
  • args:SQL 語句中對應的引數值陣列。
  • rowMapper:RowMapper 回撥介面的實現。

範例

該方法使用 SQL 語句、引數和 RowMapper 回撥介面處理查詢結果。

本範例定義單使用者查詢方法,從資料庫中查詢指定年齡段的使用者,返回這些使用者實體物件的 List 集合,關鍵程式碼如下:
public List getUsers(int minAge,int maxAge){
  String sql = "select*from tb_user where age>?&&age<?";  //建立一條SQL語句
  Integer[] args = {minAge,maxAge};
  List list = getJdbcTemplate().query(sql,args,new RowMapper(){
    public Object mapRow(ResultSet rs,int rowNum)throws SQLException{
      TbUser user = new TbUser();
      user.setAge(rs.getInt("age"));
      user.setId(rs.getInt("id"));
      user.setName(rs.getString("name"));
      user.setSex(rs.getString("sex"));
      return user;
    }
  });
  return list;
}