亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mybatis打印SQL,并顯示參數(shù)的實(shí)例

 更新時(shí)間:2020年12月02日 10:10:02   作者:肉松餅代言人  
這篇文章主要介紹了mybatis打印SQL,并顯示參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在maven的pom.xml里面添加一下依賴:

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.2.4.RELEASE</spring.version>
<version.slf4j>1.7.6</version.slf4j>
<version.logback>1.1.2</version.logback>
</properties>
<!-- log -->
 <dependency>
  <groupId>org.lazyluke</groupId>
  <artifactId>log4jdbc-remix</artifactId>
  <version>0.2.7</version>
 </dependency>
 <dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${version.slf4j}</version>
 </dependency>
 <dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>${version.logback}</version>
 </dependency>
 <dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-access</artifactId>
            <version>${version.logback}</version>
 </dependency>
 <dependency>
  <groupId>org.logback-extensions</groupId>
  <artifactId>logback-ext-spring</artifactId>
  <version>0.1.2</version>
 </dependency>
<!--jul橋接 用來(lái)輸出 Java Logging Framework (JUL) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${version.slf4j}</version>
/dependency>
 
 
<!-- jcl橋接,用來(lái)輸出 第三方Jakarta Commons Logging (JCL) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${version.slf4j}</version>
</dependency>

然后在數(shù)據(jù)源的配置文件添加以下配置:

<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
 <constructor-arg ref="dataSourceSpied" />
 </bean>(此處數(shù)據(jù)源用來(lái)代理原有的數(shù)據(jù)源,注入sessionfactory的時(shí)候用此處的dataSource)
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
 <constructor-arg ref="dataSourceSpied" />
 </bean>(此處數(shù)據(jù)源用來(lái)代理原有的數(shù)據(jù)源,注入sessionfactory的時(shí)候用此處的dataSource)

最后添加一個(gè)配置的logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!-- scan 當(dāng)此屬性設(shè)置為true時(shí),配置文件如果發(fā)生改變,將會(huì)被重新加載, 默認(rèn)值為true。 -->
<!-- scanPeriod 設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,如果沒(méi)有給出時(shí)間單位,默認(rèn)單位是毫秒。 當(dāng)scan為true時(shí),此屬性生效。 默認(rèn)的時(shí)間間隔為1分鐘。 -->
<!-- debug 當(dāng)此屬性設(shè)置為true時(shí),將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。 默認(rèn)值為false。 -->
<configuration scan="true" scanPeriod="60" debug="false">
<substitutionProperty name="log.base" value="c:/" />
<contextName>${tomcatName}${catalina.home}</contextName>

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>

<!-- 注意 logback 的括號(hào)需要轉(zhuǎn)義 -->
<encoder charset="UTF-8" class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%-5level] %d{MM-dd HH:mm:ss} %method - %m%n
</pattern>
</encoder>
</appender>

<!-- 此處配置用來(lái)只打印sql語(yǔ)句,若還想打印其他可注釋此處代碼-->
<logger name="jdbc.sqltiming" level="INFO" />
<logger name="jdbc" level="ERROR" />


<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

補(bǔ)充知識(shí):使用mybatis-plus遇到的一些問(wèn)題,以及一些簡(jiǎn)單的使用技巧

運(yùn)行提示Invalid bound statement (not found)

原因一:

實(shí)體類的的id沒(méi)有指定@TableId,

不管是主啟動(dòng)還是yml文件中的掃描mapper.xml的配置,還是dao接口,全部都沒(méi)有錯(cuò)但就是運(yùn)行報(bào)Invalid bound statement (not found)。

原因:

如果是使用mybatis-plus在涉及到主鍵id的查詢的時(shí)候,如果實(shí)體類的屬性字段不是叫做id,則需要使用@TableId指定實(shí)體類的id,就算是使用@TableField指定都沒(méi)有用,必須要使用@TableId指定。

原因二:

yml文件中配置的mapper.xml配置不正確。

例如:

mybatis-plus:
 mapper-locations: classpath*:/mapping/**/*.xml
 //當(dāng)表中的字段名有下劃線,則需要開(kāi)啟這個(gè)配置,將下劃線轉(zhuǎn)成駝峰命名法
 configuration:
  map-underscore-to-camel-case: true

原因三

主配置文件中未配置@MapperScan注解掃描mapper接口。

當(dāng)查詢返回的字段特別多時(shí),而使用的字段又只有一兩個(gè)。

可以使用 entityWrapper.setSqlSelect()方法指定查詢那些列。

當(dāng)order by和limit一起使用的時(shí)候,如果使用wrapper,他會(huì)先分頁(yè)后排序

解決方式:

可以將page引入進(jìn)來(lái),結(jié)合一起使用。

selectById方法問(wèn)題

mybatis-plus默認(rèn)是根據(jù)主鍵去查詢的,如果是非主鍵的查詢,使用該方法不能達(dá)到預(yù)期的效果。

wrapper構(gòu)造器的in方法的問(wèn)題

如果使用wrapper.in(id,list),當(dāng)list集合的元素size為0時(shí),這個(gè)in的id操作會(huì)直接去掉。

多個(gè)模糊查詢條件為and并列問(wèn)題

在使用wrapper的時(shí)候有多個(gè)條件并列的時(shí)候,它是使用or來(lái)連接這些條件的。

例如:

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

sql語(yǔ)句會(huì)變成id=“123” and name="zs"

解決方式:

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

sql語(yǔ)句會(huì)變成id=“123” and name="zs"

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

如果使用mybatis-plus的依賴,不能使用mybatis的方式配置,否則會(huì)一直有問(wèn)題,可能會(huì)報(bào)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作為返回值,查詢出來(lái)的記錄屬性字段轉(zhuǎn)成大寫(xiě),或者轉(zhuǎn)成小寫(xiě)問(wèn)題

解決方式:將mapper.xml中的sql語(yǔ)句的sql列名使用雙引號(hào)包裹。

例如:

select name as "userName" from user

查詢出來(lái)的記錄字段名是駝峰命名法,但是傳回前端卻全部變成了小寫(xiě)

在使用mybatis和lombok的時(shí)候,遇到一個(gè)特別奇怪的問(wèn)題。實(shí)體類是駝峰命名,查出來(lái)的屬性名也是駝峰命名,屬性值什么的也注入到了實(shí)體了,但是傳回前端就變成小寫(xiě)了。

原因:

在java bean的規(guī)范中實(shí)體類的屬性名前兩位必須要小寫(xiě)或者大寫(xiě)。

例如

private String cName;

傳遞到前端就會(huì)變成cname

這個(gè)問(wèn)題確實(shí)挺坑的,又因?yàn)橛玫氖茾Data的注解修飾的實(shí)體類。

解決方式:

1、使用@JsonProperty注解修飾該字段

2、手動(dòng)添加get、set方法。

3、換一個(gè)屬性名。

以上這篇mybatis打印SQL,并顯示參數(shù)的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot Web 靜態(tài)文件緩存處理的方法

    Spring Boot Web 靜態(tài)文件緩存處理的方法

    本篇文章主要介紹了Spring Boot Web 靜態(tài)文件緩存處理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Sa-Token記住我模式實(shí)現(xiàn)七天免登錄

    Sa-Token記住我模式實(shí)現(xiàn)七天免登錄

    這篇文章主要為大家介紹了Sa-Token記住我模式實(shí)現(xiàn)七天免登錄示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 在Mac下IDEA安裝并使用protobuf方式(Java)

    在Mac下IDEA安裝并使用protobuf方式(Java)

    這篇文章主要介紹了在Mac下IDEA安裝并使用protobuf方式(Java),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 淺談Java編程之if-else的優(yōu)化技巧總結(jié)

    淺談Java編程之if-else的優(yōu)化技巧總結(jié)

    說(shuō)實(shí)話,其實(shí)我很討厭在代碼里大量使用if-else,一是因?yàn)樵擃惔a執(zhí)行方式屬于面向過(guò)程的,二嘛,則是會(huì)顯得代碼過(guò)于冗余.這篇筆記,主要記錄一些自己在工作實(shí)踐當(dāng)中針對(duì)if-else的優(yōu)化心得,將會(huì)不定期地長(zhǎng)期更新,需要的朋友可以參考下
    2021-06-06
  • 利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器方法實(shí)例

    利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何利用Java簡(jiǎn)單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot使用編程方式配置DataSource的方法

    SpringBoot使用編程方式配置DataSource的方法

    這篇文章主要介紹了SpringBoot使用編程方式配置DataSource的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • SpringData如何通過(guò)@Query注解支持JPA語(yǔ)句和原生SQL語(yǔ)句

    SpringData如何通過(guò)@Query注解支持JPA語(yǔ)句和原生SQL語(yǔ)句

    這篇文章主要介紹了SpringData如何通過(guò)@Query注解支持JPA語(yǔ)句和原生SQL語(yǔ)句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java實(shí)現(xiàn)求數(shù)組最長(zhǎng)子序列算法示例

    Java實(shí)現(xiàn)求數(shù)組最長(zhǎng)子序列算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)求數(shù)組最長(zhǎng)子序列算法,涉及java針對(duì)數(shù)組的遞歸遍歷、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • SpringCache框架加載/攔截原理詳解

    SpringCache框架加載/攔截原理詳解

    這篇文章主要介紹了SpringCache框架加載/攔截原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java 深入淺出講解泛型與包裝類

    Java 深入淺出講解泛型與包裝類

    泛型是在Java SE 1.5引入的的新特性,本質(zhì)是參數(shù)化類型,也就是說(shuō)所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法,本篇我們一起來(lái)學(xué)習(xí)泛型以及包裝類
    2022-04-04

最新評(píng)論