名前付プレースホルダ

概要

SimpleORM4Jでは、Criteriaメソッドの引数として使用する式表現(Expression)の中で、「名前付きプレースホルダ」を使用できます。
名前付きプレースホルダを使用した場合、静的プレースホルダとしてPREPARE文の実行後にパラメータがバインドされます。
ユーザからの入力値は、直接式表現に値を記述するのではなく、「名前付きプレースホルダ」を使用してください。
SQLインジェクション対策として、「名前付きプレースホルダ」の使用を推奨します。

実装例

「名前付きプレースホルダ」を式表現(Expression)で使用するには、「:(セミコロン)」の後ろにプレースホルダ名を記述してください。
EntityManager#createQueryメソッドでQueryを作成後に、Query#setParameterメソッドで、パラメータを設定してください。

■ 実装例
try {
	EntityManager em = EntityManagerFactory.createEntityManager();
	Criteria criteria = em.getCriteria();
	criteria.select(School.class.getDeclaredField("id"),
			    School.class.getDeclaredField("name"),
			    Department.class.getDeclaredField("schoolId"))
		  .from(Department.class)
		  .join(JoinType.RIGHT, School.class,
			  Expression.equal(School.class.getDeclaredField("id"), Department.class.getDeclaredField("schoolId")))
		  .where(Expression.equal(School.class.getDeclaredField("id"), ":id"));
	Query query = em.createQuery(criteria);
	query.setParameter("id", 3);
	List<Map<String, Object>> resultList = (List<Map<String, Object>) query.getResultList();
	System.out.println(resultList);
} catch (Exception e) {
	e.printStackTrace();
}

ご意見・ご感想・バグ報告

×

SimpleORM4Jへのご意見やご感想がございましたら、メッセージをお願い致します。
また、SimpleORM4Jを使用して頂きまして、バグがございましたらご連絡を頂けると助かります。
皆様からのご意見・ご感想をもとに、SimpleORM4Jを改善・拡張をしていきたいと考えております。
皆様からのメッセージは当方で確認をしておりますが、仕事をしながらの開発となる為、すぐにご返信・対応をすることが 出来ない場合がございます。何卒ご容赦ください。

※印は必須です
タイトル
メールアドレス
内容