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