سؤال

أنا باستخدام الربيع دعم JDBC.أود أن استخدام JdbcTemplate (أو SimpleJdbcTemplate) لتنفيذ الاستعلام والحصول على نتيجة مثيل ResultSet.

الطريقة الوحيدة التي أستطيع أن أرى من تحقيق هذا باستخدام:

String sql = "select * from....";
SqlRowSet results = jdbcTemplate.queryForRowSet(sql);
((ResultSetWrappingSqlRowSet) results).getResultSet();

هذا قصورا واضحا من هذا النهج هو أنه يتطلب مني أن تجعل افتراض (قبل الصب) عن تنفيذ نوع من SqlRowSet لكن هل هناك طريقة أفضل ؟

معلومات خلفية...

السبب في أنني أريد الحصول على النتائج كما ResultSet بدلا من مجموعة من الفاصوليا ، لأن النتائج سوف تكون مرت مباشرة إلى جاسبر تقرير للعرض.وبعبارة أخرى ، فإن الفول جافا سوف تستخدم سوى مؤقتا تخزين كل صف في ResultSet و أود أن تجنب إنشاء مثل الفول كل جاسبر تقرير إذا كان ذلك ممكنا.

هتافات ،

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

المحلول

إذا كنت ترغب في مجرد إجراء الاستعلام والحصول على النتائج, لماذا لا تستخدم عادي jdbc والاستيلاء على resultset?لاحظ أنك لا تحتاج الربيع للقيام بذلك فقط.

    Connection c = ...
    c.prepareCall("select ...").getResultSet();

بالإضافة إلى أنك تحصل على ميزة باستخدام كائن كما DTO.أنت لا تحتاج إلى تغيير إعدادات DTO الدرجة حتى إذا كانت البيانات الخاصة بك رصا أو التقرير الخاص بك أداة التغييرات (دعنا نقول البدء في استخدام xquery بدلا من jdbc أو كنت تستخدم apache-poi بدلا من جاسبر.

نصائح أخرى

يمكنك إما الاحتجاج يشب داخل JdbcTemplate رد (مثل ResultSetExtractor) أو استخدام مستقيم JDBC لتمرير ResultSet أن يشب.وفي كلتا الحالتين عند استدعاء جاسبر الاتصال الخاص بك إلى قاعدة البيانات لا تزال نشطة حتى التقرير النهائي.

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