mybatissql查詢
A. mybatis執行sql查不到數據,在資料庫執行可以查到
datasource或者jdbc中的配置url不對 , 設置編碼格式,表創建時候的編碼格式需要在url中聲明,並且傳入的數據也應該是相同編碼格式的(這個沒注意,一直用的utf8).
比如 你創建一張表 使用的是engine innodb charset utf8;那麼你的數據源url連接就應該是 jdbc:mysql://(資料庫地址+埠)/(資料庫名)?useUnicode=true&characterEncoding=utf8(可能還會有別的參數需要指定);
究其原因 還是因為編碼格式的問題,你的李四 到資料庫的前,會在myabtis做一些處理,做這些處理的時候,李四就可能不在是李四了 所以使用mybatis查詢不到,但是在mysql中直接查詢是查詢得到的
B. Mybatis鐨勫姩鎬丼QL鏌ヨ㈡棤鏁
鎴戠寽嫻嬪傛灉緋葷粺娌℃湁鎶ラ敊錛岄偅涔堝氨鏄浣犵殑sql璇鍙ヨ窡浣犻勬兂鐨勪笉涓鏍
select * from student
name like #{name}
and sex=#{sex}
浣犳浛鎹涓涓嬪彉閲忥紝鎴栬呭共鑴嗗氨涓嶈佷紶鍊間簡銆
C. mybatis濡備綍鏌ヨ㈠氭潯sql璇鍙ヨ繑鍥炲墠鍙伴〉闈㈠洖鏄炬暟鎹
寤鴻浠ヨ繖鏍風殑鎬濊礬瑙e喅闂棰橈細
1銆佸傛灉榪3涓鏌ヨ㈢殑閫昏緫涓嶅嶆潅錛屽彲浠ュ湪mybatis鐨刴apper鏂囦歡涓灝唖ql鍚堝苟銆
2銆1鏃犳硶瑙e喅闂棰橈紝鑰屼笁涓猯ist緇撴灉闆嗙殑map緇撴瀯鐩稿悓錛屽湪鍚庡彴鍙浠ョ敤list.addAll()榪涜屽悎騫躲
3銆佸傛灉2浠嶇劧鏃犳硶瑙e喅錛岄偅灝卞彧鑳芥牴鎹涓氬姟鐗規畩澶勭悊
D. 如何在mybatis中調試查看生成的sql語句
mybatis的源碼中查看生成的sql語句,參考執行以下代碼即可。具體代碼如下:
把裡面PooledDataSource類的log輸出部分,換成log.warn之後,重新打jar包,放到項目中,日誌級別改為info,如:
java">log4j.rootLogger=info,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[service]%d-%c-%-4r[%t]%-5p%c%x-%m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=../logs/service.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[service]%d-%c-%-4r[%t]%-5p%c%x-%m%n
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug
log4j.logger.java.sql.ResultSet=debug