mybatis打印SQL,并显示参数实例

网友投稿 1130 2023-03-05

mybatis打印SQL,并显示参数的实例

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-dd HH:mm:ss} %method - %m%n

补充知识:使用mybatis-plus遇到的一些问题,以及一些简单的使用技巧

运行提示Invalid bound statement (not found)

原因一:

实体类的的id没有指定@TableId,

不管是主启动还是yml文件中的扫描mapper.xml的配置,还是dao接口,全部都没有错但就是运行报Invalid bound statement (not found)。

原因:

如果是使用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()方法指定查询那些列。

当order by和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” and name="zs"

解决方式:

wrapper.eq("id","123").eq("name","zs")

sql语句会变成id=“123” and name="zs"

mybatis和mybatis-plus的配置扫描的方式有些不同

如果使用mybatis-plus的依赖,不能使用mybatis的方式配置,否则会一直有问题,可能会报invalid not bind statement

mybatis提示java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

在mapper.xml文件中使用了这种判断 date != null and date != ‘',把date!=''删除就可以了。

使用Map作为返回值,查询出来的记录属性字段转成大写,或者转成小写问题

解决方式:将mapper.xml中的sql语句的sql列名使用双引号包裹。

例如:

select name as "userName" from user

查询出来的记录字段名是驼峰命名法,但是传回前端却全部变成了小写

在使用mybatis和lombok的时候,遇到一个特别奇怪的问题。实体类是驼峰命名,查出来的属性名也是驼峰命名,属性值什么的也注入到了实体了,但是传回前端就变成小写了。

原因:

在java bean的规范中实体类的属性名前两位必须要小写或者大写。

例如

private String cName;

传递到前端就会变成cname

这个问题确实挺坑的,又因为用的是@Data的注解修饰的实体类。

解决方式:

1、使用@jsonProperty注解修饰该字段

2、手动添加get、set方法。

3、换一个属性名。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot配置使Mybatis打印SQL执行时的实际参数值操作
下一篇:微信pc 小程序(微信pc小程序游戏玩着白屏)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~