最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在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橋接 用來輸出 Java Logging Framework (JUL) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${version.slf4j}</version>
/dependency>
 
 
<!-- jcl橋接,用來輸出 第三方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ù)源用來代理原有的數(shù)據(jù)源,注入sessionfactory的時候用此處的dataSource)
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
 <constructor-arg ref="dataSourceSpied" />
 </bean>(此處數(shù)據(jù)源用來代理原有的數(shù)據(jù)源,注入sessionfactory的時候用此處的dataSource)

最后添加一個配置的logback.xml文件:

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

<!-- scan 當此屬性設置為true時,配置文件如果發(fā)生改變,將會被重新加載, 默認值為true。 -->
<!-- scanPeriod 設置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。 當scan為true時,此屬性生效。 默認的時間間隔為1分鐘。 -->
<!-- debug 當此屬性設置為true時,將打印出logback內(nèi)部日志信息,實時查看logback運行狀態(tài)。 默認值為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 的括號需要轉(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>

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


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

補充知識:使用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
 //當表中的字段名有下劃線,則需要開啟這個配置,將下劃線轉(zhuǎn)成駝峰命名法
 configuration:
  map-underscore-to-camel-case: true

原因三

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

當查詢返回的字段特別多時,而使用的字段又只有一兩個。

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

當order by和limit一起使用的時候,如果使用wrapper,他會先分頁后排序

解決方式:

可以將page引入進來,結(jié)合一起使用。

selectById方法問題

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

wrapper構(gòu)造器的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作為返回值,查詢出來的記錄屬性字段轉(zhuǎn)成大寫,或者轉(zhuǎn)成小寫問題

解決方式:將mapper.xml中的sql語句的sql列名使用雙引號包裹。

例如:

select name as "userName" from user

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

在使用mybatis和lombok的時候,遇到一個特別奇怪的問題。實體類是駝峰命名,查出來的屬性名也是駝峰命名,屬性值什么的也注入到了實體了,但是傳回前端就變成小寫了。

原因:

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

例如

private String cName;

傳遞到前端就會變成cname

這個問題確實挺坑的,又因為用的是@Data的注解修飾的實體類。

解決方式:

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

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

3、換一個屬性名。

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

相關(guān)文章

  • Java實現(xiàn)本地緩存的方式匯總

    Java實現(xiàn)本地緩存的方式匯總

    引入緩存,主要用于實現(xiàn)系統(tǒng)的高性能,高并發(fā),這篇文章主要介紹了Java實現(xiàn)本地緩存的幾種方式,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Springmvc國際化自動配置代碼實現(xiàn)

    Springmvc國際化自動配置代碼實現(xiàn)

    這篇文章主要介紹了Springmvc國際化自動配置代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java實現(xiàn)撲克牌的創(chuàng)建以及發(fā)放

    Java實現(xiàn)撲克牌的創(chuàng)建以及發(fā)放

    在java當中生成一副牌有很多種方法,有簡單易于理解的面向過程編程,也有面向?qū)ο竽K化編程,下面這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)撲克牌的創(chuàng)建以及發(fā)放的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Java線程中的ThreadLocal詳細分析

    Java線程中的ThreadLocal詳細分析

    這篇文章主要介紹了Java線程中的ThreadLocal詳細分析,ThreadLocal?提供線程的局部變量,每個線程都可以通過?get()和?set()對局部變量進行操作而不會對其他線程的局部變量產(chǎn)生影響,實現(xiàn)了線程之間的數(shù)據(jù)隔離,需要的朋友可以參考下
    2023-09-09
  • java關(guān)于持久層面試題目整理

    java關(guān)于持久層面試題目整理

    在本篇文章里小編給大家分享的是一篇關(guān)于java關(guān)于持久層面試題目整理內(nèi)容,需要的朋友們可以學習下。
    2020-03-03
  • mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作

    mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作

    這篇文章主要介紹了mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法

    JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法

    這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法,實例分析了java爬蟲的兩種實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解

    如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解

    這篇文章主要為大家介紹了如何實現(xiàn)nohup?java進程號一直在變方法步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java?Collections工具類中常用算法解析

    Java?Collections工具類中常用算法解析

    在軟件開發(fā)中,算法是非常重要的一部分,它們可以提供高效的數(shù)據(jù)處理和操作,這篇文章主要為大家介紹了Collections?工具類集合框架中常用算法,感興趣的可以了解一下
    2023-06-06
  • JsonFormat與@DateTimeFormat注解實例解析

    JsonFormat與@DateTimeFormat注解實例解析

    這篇文章主要介紹了JsonFormat與@DateTimeFormat注解實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論

吉隆县| 泸西县| 阳山县| 响水县| 丰县| 汤阴县| 大姚县| 浦城县| 临沭县| 江山市| 景泰县| 太白县| 石泉县| 南通市| 常德市| 南安市| 乌鲁木齐县| 宁波市| 论坛| 夏津县| 镇原县| 承德县| 定陶县| 沂水县| 上高县| 阿克陶县| 灵宝市| 仁化县| 庄浪县| 包头市| 栾城县| 连山| 通渭县| 明光市| 定边县| 遵义县| 长岛县| 霍州市| 拉萨市| 古蔺县| 河曲县|