工作中使用到JPA查詢數據庫,遇到 createNativeQuery() 語句設置 SQL 中 IN 的查詢條件,以此文記錄。
例子:
public List<Student> getStuInStuIds(List list) { // 用於拼接SQL StringBuilder sql = new StringBuilder(); // 設置參數集 Map<String, Object> params = new HashMap<String, Object>(); params.put("STUID", list); // SQL拼接 sql.append("SELECT "); sql.append(" ID, "); sql.append(" NAME, "); sql.append(" SEX "); sql.append("FROM "); sql.append(" STUDENT "); sql.append("WHERE "); sql.append(" ID IN :STUID "); // 創建Query Query query = entityManager.createNativeQuery(sql.toString(), Student.class); // 設置Query參數 for (Entry<String, Object> entry : params.entrySet()) { query.setParameter(entry.getKey(), entry.getValue()); } List<Student> result; try { // 執行Query result = query.getResultList(); } catch (Exception e) { result = null; } return result; }
【注】設置 IN 參數時,傳入參數須為 List 類型。(占位符 :STUID 對應的參數為 list)
Oracle查詢表構造
(1)查詢表的注釋信息:USER_TAB_COMMENTS
例:
SELECT * FROM USER_TAB_COMMENTS WHERE table_name='TEST_DEPT'
結果:
(2)查詢列的詳細信息:USER_TAB_COLUMNS
例:
SELECT * FROM USER_TAB_COLUMNS WHERE table_name='TEST_DEPT'
結果:
(該結果字段有點多,結果圖片只截取了前部分)
(3)查詢列的注釋信息:USER_COL_COMMENTS
例:
SELECT * FROM USER_COL_COMMENTS WHERE table_name='TEST_DEPT'
結果: