Mengapa output SQL di konsol?
Tentu saja, itu untuk kenyamanan pengembangan dan debugging.
Jika ada masalah dengan operasi terkait database, kami dapat dengan cepat memecahkan masalah berdasarkan pernyataan SQL output.
Informasi Output:
[org.mybatis.spring.sqlsessionutils] -Menik SQLSession baru
[org.mybatis.spring.sqlsessionutils] -sqlSession [org.apache.iathis.session.defaults.defaultsqlsession@33290f98] tidak terdaftar untuk sinkronisasi karena sinkronisasi tidak aktif
[org.springframework.jdbc.datasource.datasourceutils] -fetching koneksi JDBC dari DataSource
[org.mybatis.spring.transaction.springManagedTransaction] -jdbc koneksi [jdbc: mysql: //rds.aliyuncs.com: 3306/yyyy? UseUnicode = true & karakterencoding = utf-8 & nolodateTimeBeHavior = convertton = [email protected], konektor mysql java] tidak akan dikelola oleh musim semi
[Datenumber.pageselect]-==> mempersiapkan: pilih x.id, date_format (x.`date`, '%y%m%d') `dateStr`, x.befor_num, x.after_num, x.physician_id, y.department_id, y.clinic_id, y.truician datenumber x kanan bergabung dengan fisik y pada x.physician_id = y.id dan (x.`date`> =? dan x.`date` <=?) Di mana 1 = 1 dan y.clinic_id =? Pesanan oleh x.date asc
[Datenumber.Pageselect]-==> Parameter: 2017-3-28 (String), 2017-4-4 (String), 1 (Long)
[Datenumber.Pageselect]-<== Total: 19
Konten output cukup mengerikan. Karakter koneksi database dan nama pengguna dan kata sandi adalah output, jadi hati -hati.
Namun, satu hal yang buruk adalah bahwa pernyataan dan parameter SQL adalah output secara terpisah. Jika Anda ingin menyalinnya ke alat kueri untuk men -debug, Anda harus mengisi parameter sendiri, yang lebih merepotkan.
Lingkungan proyek saya
Spring 4.0.2 + Spring MVC 4.0.2 + Mybatis 3.2.6
Metode 1: Gunakan output log standar
Metode ini relatif sederhana. Anda hanya perlu mengonfigurasi file konfigurasi mybatis dengan properti yang relevan, dan Anda tidak perlu meletakkan file log4j.properties.
<? Xml Version = "1.0" encoding = "UTF-8"?> <! Doctype Configuration Public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <konfigurasi> <pingpling> "" "" ""> <"load-config.dtd"> <pingpl "> value = "stdout_logging"/> </settings> </configuration>
Pernyataan utama:
<pengaturan nama = "LogImpl" value = "stdout_logging"/>
Menentukan implementasi logging mana yang harus digunakan mybatis. Jika pengaturan ini tidak ada, implementasi logging secara otomatis ditemukan.
Metode 2: Gunakan output log log4j
1. File Spring-Mybatis.xml tidak perlu dimodifikasi;
2. Di mybatis.xml, tentukan untuk menggunakan log4j sebagai implementasi log, yang saya tidak perlu benar -benar menguji.
<? Xml Version = "1.0" encoding = "utf-8"?> <! Doctype Configuration Public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <"" "" "" "" "" "" " </stueptings> </configuration> <!-Faktanya, Anda dapat menguji apakah file ini tersedia->
Nilai nilai di sini dapat berupa slf4j, logging Apache Commons, log4j2, log4j, jdk logging (kecuali log4j2, log4j, lainnya yang tidak diverifikasi), dan akan dicari secara berurutan.
3. Mengkonfigurasi juga diperlukan di web.xml
<listener> <listener-class> org.springframework.web.util.log4jconfigListener </engeaner-class> </engeaner>
Atau gunakan yang berikut (tidak diuji)
<listener> <listener-class> org.apache.logging.log4j.web.log4jServletContextListener </listener-class> </engeaner>
4. Akhirnya konfigurasikan log4j.properties
Konfigurasi ### LOG4J #### ### Dalam kombinasi dengan musim semi, Anda perlu menentukan lokasi file ini di web.xml dan menambahkan pendengar #### #TEGINE Level output dan tujuan output LOG4J (Tujuan, Appenden, dan yang sesuai dengan Log4, level. [level], AppendEname1, AppendEname2, dan yang sesuai dengan LOG4. [LEVEL], APPENDERNAME1, APPENDERNAME2. #--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LOG4J.Appender.Console.threshold = Debug ##### Anda dapat secara fleksibel menentukan format output log. Baris berikut menentukan format spesifik. ############ Kategori yang dimiliki oleh informasi log keluaran biasanya nama lengkap dari kelas#%M: Pesan yang ditentukan dalam kode, informasi log spesifik yang dihasilkan#%n: output A carriage return line break, windows platform "/r/n", dan platform unix adalah "/n" untuk mengeluarkan informasi log newline.apper.apper. org.apache.log4j.patternlayout log4j.Appender.console.layout.conversionPattern = [%c]-%m%n #--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- org.apache.log4j.rollingfileAppender #log File Output Direktori Log4j.Appender.file.file = log/tibet.log #define ukuran file maksimum LOG4J.Appender.File.MaxFileSize = 10MB ### LOG OUTPUT INFORMASI ### #LOWEST LEVEL.MAXFILESSIZE = 10MB.## Output #####LOWEST LEVEL.MAXFILESIZE = 10MB.## Output #####LOWEST LEVEL.MAXFILESIZE. LOG4J.Appender.file.layout = org.apache.log4j.patternlayout log4j.applender.file.layout.conversionPattern = [%p] [%d {yy-mm-dd}] [%c]%m%n #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Tampilkan bagian pernyataan SQL bagian log4j.logger.org.mybatis = debug #log4j.logger.cn.tibet.cas.dao = debug #log4j.logger.org.mybatis.common.jdbc.simpledataSource = debug #log4j.logger.org.mybatis.common.jdbc.scripTrunner = debug #log4j.logger.org.mybatis.sqlmap.engine.Impl.sqlMapClientDelegate = debug #log4j.logger.java.sqlentdelegate = debug log4j.logger.java.sql = debug log4j.logger.java.sql.statement = debug log4j.logger.java.sql.resultset = debug log4j.logger.java.sql.preparstatement = debug Perbandingan dari dua cara
1. Konfigurasi menggunakan output log standar sederhana, sedangkan konfigurasi menggunakan output log log4J relatif kompleks;
2. Log4j memiliki fungsi yang kuat dan granularitas kontrol yang relatif halus;
Ketika ditentukan sebagai "stdout_logging" di file konfigurasi, implementasi log mana yang sebenarnya digunakan? Apache Commons Logging atau JDK Logging?
Tak satu pun dari mereka, itu sebenarnya System.out.pringln.
Diperbarui pada 2017-09-14
Beberapa teman telah melaporkan bahwa mereka tidak akan mengeluarkan pernyataan SQL setelah mengkonfigurasi metode kedua. Harap dicatat bahwa di file log4j.properties:
LOG4J.APPENDER.CONSOLE.THRESHOLD = DEBUG
Apakah konsisten dengan contoh ini?
Harap perhatikan detailnya. Teman -teman yang baru mulai belajar dapat menggunakan konfigurasi yang disediakan terlebih dahulu dalam contoh ini dan kemudian menyesuaikannya dengan cara pribadi.
Selain itu, sesuai dengan konfigurasi di atas, saya akan mengeluarkan sejumlah besar informasi di luar pernyataan SQL. Seorang teman mencoba menghasilkan hanya pernyataan, parameter, dan hasil SQL.
Terima kasih di sini dan bagikan dengan Anda:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.