سؤال

والإطار الربيع اثنين من الطبقات مماثلة: 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);

وهناك القليل من الفم، ولكن يحصل على هذه المهمة.

على تحديث : في هذا هو في الواقع أكثر تعقيدا مما هو ضروري. وينظر جواب.

هل كانت مفيدة؟

المحلول

وSimpleJdbcTemplate ليست بديلا عن 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 نفسك يدويا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top