كيف يمكنني setQueryTimeout على SimpleJdbcTemplate؟
-
05-07-2019 - |
سؤال
والإطار الربيع اثنين من الطبقات مماثلة: JdbcTemplate هو القديم، جافا 1.4 درجة، وSimpleJdbcTemplate هو أحدث، مع أساليب أجمل
.وJdbcTemplate لديه الأسلوب <لأ href = "http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/JdbcTemplate.html#setQueryTimeout(int)" يختلط = "noreferrer"> setQueryTimeout ، الذي يعطي أساسا لي الوصول الى طريقة بنفس الاسم على الكائن الإعلان الأساسي.
هل هناك أي طريقة لفعل شيء مماثل مع <لأ href = "http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jdbc/core/simple/SimpleJdbcTemplate. أتش تي أم أل "يختلط =" noreferrer "> SimpleJdbcTemplate ؟
<القوي> الحل : لوبناء على الجواب skaffman، وأنا خلق SimpleJdbcTemplate
الاعتراض نفسي من JdbcTemplate
، وحتى الآن أستطيع أن أفعل ما أريد. الرمز:
JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
وهناك القليل من الفم، ولكن يحصل على هذه المهمة.
على تحديث : في هذا هو في الواقع أكثر تعقيدا مما هو ضروري. وينظر جواب.
المحلول
وSimpleJdbcTemplat
e ليست بديلا عن JdbcTemplate
، انها مجرد تكملة صديقة للjava5 إلى ذلك، بالنسبة لبعض العمليات التي يمكن الاستفادة القصوى من varargs والأدوية.
إذا نظرتم الى مصدر للSimpleJdbcTemplate
، سترى أنه المندوبين جميع أعمالها إلى كائن JdbcTemplate
، وذلك عن طريق تحديد مهلة (أو خيارات أخرى) على JdbcTemplate
، كنت ضمنيا مجموعة منهم على SimpleJdbcTemplate
أيضا.
إذا كنت الحصول على SimpleJdbcTemplate
عبر SimpleJdbcDaoSupport.getSimpleJdbcTemplate()
، ثم بالفعل تم السلكية JdbcTemplate
بشكل صحيح.
وتحرير:
وعلى سبيل المثال:
public class MyDao extends SimpleJdbcDaoSupport {
public void doStuff() {
getJdbcTemplate().setQueryTimeout(x);
getSimpleJdbcTemplate().execute(...);
}
}
ووSimpleJdbcTemplate يحتوي على نفس JdbcTemplate كما تم استردادها بواسطة getJdbcTemplate ().
إذا كنت لا تمديد SimpleJdbcDaoSupport، ثم نعم، تحتاج لبناء SimpleJdbcTemplate نفسك يدويا.