mybatis打印SQL,并显示参数的实例
在maven的pom.xml里面添加一下依赖:
UTF-8 3.2.4.RELEASE 1.7.6 1.1.2
org.lazyluke log4jdbc-remix 0.2.7 org.slf4j slf4j-api ${version.slf4j} ch.qos.logback logback-classic ${version.logback} ch.qos.logback logback-access ${version.logback} org.logback-extensions logback-ext-spring 0.1.2
org.slf4j jul-to-slf4j ${version.slf4j} /dependency>org.slf4j jcl-over-slf4j ${version.slf4j}
然后在数据源的配置文件添加以下配置:
(此处数据源用来代理原有的数据源,注入sessionfactory的时候用此处的dataSource) (此处数据源用来代理原有的数据源,注入sessionfactory的时候用此处的dataSource)
最后添加一个配置的logback.xml文件:
${tomcatName}${catalina.home} DEBUG [%-5level]%d{MM-ddHH:mm:ss}%method-%m%n
补充知识:使用mybatis-plus遇到的一些问题,以及一些简单的使用技巧
运行提示Invalidboundstatement(notfound)
原因一:
实体类的的id没有指定@TableId,
不管是主启动还是yml文件中的扫描mapper.xml的配置,还是dao接口,全部都没有错但就是运行报Invalidboundstatement(notfound)。
原因:
如果是使用mybatis-plus在涉及到主键id的查询的时候,如果实体类的属性字段不是叫做id,则需要使用@TableId指定实体类的id,就算是使用@TableField指定都没有用,必须要使用@TableId指定。
原因二:
yml文件中配置的mapper.xml配置不正确。
例如:
mybatis-plus: mapper-locations:classpath*:/mapping/**/*.xml //当表中的字段名有下划线,则需要开启这个配置,将下划线转成驼峰命名法 configuration: map-underscore-to-camel-case:true
原因三
主配置文件中未配置@MapperScan注解扫描mapper接口。
当查询返回的字段特别多时,而使用的字段又只有一两个。
可以使用entityWrapper.setSqlSelect()方法指定查询那些列。
当orderby和limit一起使用的时候,如果使用wrapper,他会先分页后排序
解决方式:
可以将page引入进来,结合一起使用。
selectById方法问题
mybatis-plus默认是根据主键去查询的,如果是非主键的查询,使用该方法不能达到预期的效果。
wrapper构造器的in方法的问题
如果使用wrapper.in(id,list),当list集合的元素size为0时,这个in的id操作会直接去掉。
多个模糊查询条件为and并列问题
在使用wrapper的时候有多个条件并列的时候,它是使用or来连接这些条件的。
例如:
wrapper.eq("id","123").eq("name","zs")
sql语句会变成id=“123”andname="zs"
解决方式:
wrapper.eq("id","123").eq("name","zs")
sql语句会变成id=“123”andname="zs"
mybatis和mybatis-plus的配置扫描的方式有些不同
如果使用mybatis-plus的依赖,不能使用mybatis的方式配置,否则会一直有问题,可能会报invalidnotbindstatement
mybatis提示java.lang.IllegalArgumentException:invalidcomparison:java.util.Dateandjava.lang.String
在mapper.xml文件中使用了这种判断date!=nullanddate!=‘',把date!=''删除就可以了。
使用Map作为返回值,查询出来的记录属性字段转成大写,或者转成小写问题
解决方式:将mapper.xml中的sql语句的sql列名使用双引号包裹。
例如:
selectnameas"userName"fromuser
查询出来的记录字段名是驼峰命名法,但是传回前端却全部变成了小写
在使用mybatis和lombok的时候,遇到一个特别奇怪的问题。实体类是驼峰命名,查出来的属性名也是驼峰命名,属性值什么的也注入到了实体了,但是传回前端就变成小写了。
原因:
在javabean的规范中实体类的属性名前两位必须要小写或者大写。
例如
privateStringcName;
传递到前端就会变成cname
这个问题确实挺坑的,又因为用的是@Data的注解修饰的实体类。
解决方式:
1、使用@JsonProperty注解修饰该字段
2、手动添加get、set方法。
3、换一个属性名。
以上这篇mybatis打印SQL,并显示参数的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。