لماذا إخراج SQL على وحدة التحكم؟
بالطبع ، هو لراحة التنمية وتصحيح الأخطاء.
إذا كانت هناك مشكلة في عملية متعلقة بقاعدة البيانات ، فيمكننا سرعان ما نأتي على المشكلة استنادًا إلى عبارة SQL الإخراج.
معلومات الإخراج:
[org.mybatis.spring.sqlsessionutils]-إنشاء SQLSession جديد
[org.mybatis.spring.sqlsessionutils] -sqlsession [org.apache.ibatis.session.defaults.defaultsqlsession@33290f98]
[org.springframework.jdbc.dataSource.DataSourceUtils]-
[org.mybatis.spring.transaction.springManagedTransaction] -jdbc اتصال [jdbc: mysql: //rds.aliyuncs.com: 3306/yyyy؟ useUnicode = true & charactering = utf-8 & ZerodateTimeBehavior = اسم المستخدم[email protected] ، لن تتم إدارة موصل MySQL Java] بحلول الربيع
[datenumber.pageselect]-==> التحضير: SELECT X.ID ، DATE_FORMAT ( datenumber x right right yeld y على x.physician_id = y.id و (x.`date`> =؟ و x.`date` <=؟) أين 1 = 1 و y.clinic_id =؟ طلب بواسطة X.Date ASC
[datenumber.pageselect]-==> المعلمات: 2017-3-28 (سلسلة) ، 2017-4-4 (سلسلة) ، 1 (طويل)
[datenumber.pageselect]-<== المجموع: 19
محتوى الإخراج فظيع للغاية. يتم إخراج أحرف اتصال قاعدة البيانات واسم المستخدم وكلمة المرور ، لذا كن حذرًا.
ومع ذلك ، هناك شيء واحد سيء هو أن عبارات SQL والمعلمات يتم إخراجها بشكل منفصل. إذا كنت ترغب في نسخها إلى أداة الاستعلام للتصحيح ، فيجب عليك ملء المعلمات بنفسك ، وهو أمر أكثر إثارة للقلق.
بيئة مشروعي
الربيع 4.0.2 + Spring MVC 4.0.2 + MyBatis 3.2.6
الطريقة 1: استخدم إخراج السجل القياسي
هذه الطريقة بسيطة نسبيا. تحتاج فقط إلى تكوين ملف التكوين لـ MyBatis مع الخصائص ذات الصلة ، ولا تحتاج إلى وضع ملف log4j.properties.
<؟ value = "stdout_logging"/> </settings> </configuration>
البيانات الرئيسية:
<Setting Name = "logimpl" value = "stdout_logging"/>
يحدد تنفيذ التسجيل الذي يجب أن يستخدمه MyBatis. إذا لم يكن هذا الإعداد موجودًا ، يتم اكتشاف تطبيقات التسجيل تلقائيًا.
الطريقة 2: استخدم سجل سجل log4j
1. ملف spring-mybatis.xml لا يلزم تعديله ؛
2. في mybatis.xml ، حدد لاستخدام Log4J كتطبيق السجل ، والذي لا أحتاج إلى اختباره بالفعل.
<؟ </settings> </configuration> <!-في الواقع ، يمكنك اختبار ما إذا كان هذا الملف متاحًا->
يمكن أن تكون قيم القيمة هنا SLF4J ، وتسجيل Apache Commons ، و Log4J2 ، و Log4J ، و JDK تسجيل (باستثناء log4j2 ، و log4j ، وغيرها غير التحقق) ، وسيتم البحث عنها بالترتيب.
3. التكوين مطلوب أيضًا في web.xml
<StaNeer> <stanker-class> org.springframework.web.util.log4jConfigListener </leader-class> </stanter>
أو استخدم ما يلي (لم يتم اختباره)
<StaNeer> <stanker-class> org.apache.logging.log4j.web.log4jservletContextRistener </leader-class> </stanker>
4. أخيرًا تكوين log4j.properties
### log4j configuration #### #### ad مع Spring ، تحتاج إلى تحديد موقع الملف هذا في web.xml وإضافة مستمع ######تحديد مستوى الإخراج ووجهة الإخراج من log4j (يمكن تخصيص الوجهة ، و confired ، filed ، filed ، filed ، #--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- log4j.appender.console.throshold = debug ##### يمكنك تحديد تنسيق إخراج السجل بمرونة. يحدد السطر التالي التنسيق المحدد. ############/الفئة التي تنتمي إليها معلومات سجل الإخراج عادةً ما تكون الاسم الكامل للفئة#٪ M: الرسالة المحددة في الكود ، ومعلومات السجل المحددة التي تم إنشاؤها#٪ n: إخراج خط إرجاع سطر الإرجاع ، نظام Windows هو "/r/n" ، و unix platfor log4j.appender.console.layout.ConversionPattern=[%c]-%m%n #-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- When the file size reaches الحجم المحدد ، يتم إنشاء ملف جديد log4j.appender.file = org.apache.log4j.rollingfileAppender #log دليل إخراج ملف log4j.appender.file log4j.appender.file.throshold = خطأ log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern = [٪ p] [٪ d {yy-mm-dd}] [٪ c] ٪ n #------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- عرض جزء SQL جزء log4j.logger.org.mybatis = debug #log4j.logger.cn.tibet.cas.dao = debug #log4j.logger.org.mybatis.common.jdbc.simpledataSource = debug #log4j.logger.org.smybatis.common.common.common.common.comm. #log4j.logger.org.mybatis.sqlmap.engine.impl.sqlmapclientdelegate = debug #log4j.logger.java.sql.connection = debug log4j.logger.java.sql = debug log4j.logger.java.sql log4j.logger.java.sql.resultset = debug log4j.logger.java.sql.prepedstatement = debug مقارنة بين الطريقتين
1. التكوين باستخدام إخراج السجل القياسي بسيط ، في حين أن التكوين باستخدام إخراج سجل log4j معقد نسبيًا ؛
2. Log4J لديه وظائف قوية وحبيبية التحكم الدقيقة نسبيا.
عند تحديد "stdout_logging" في ملف التكوين ، ما هو تطبيق السجل المستخدم بالفعل؟ تسجيل Apache Commons أو تسجيل JDK؟
لا شيء منهم ، هو في الواقع system.out.pringln.
تم تحديثه في 2017-09-14
أبلغ بعض الأصدقاء أنهم لن يخرجوا عبارات SQL بعد تكوين الطريقة الثانية. يرجى ملاحظة أنه في ملف log4j.properties:
log4j.appender.console.threshold = debug
هل تتفق مع هذا المثال؟
يرجى الانتباه إلى التفاصيل. يمكن للأصدقاء الذين بدأوا للتو الدراسة أولاً استخدام التكوين المقدم في هذا المثال ثم تخصيصه بطريقة شخصية.
بالإضافة إلى ذلك ، وفقًا للتكوين أعلاه ، سأقوم بإخراج كمية كبيرة من المعلومات خارج عبارات SQL. حاول صديق إخراج عبارات SQL والمعلمات والنتائج فقط.
شكرا لك هنا وشارككم:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.