Spring-Boot整合通用PageHelper外掛遇到的問題

appleyk發表於2018-09-05

 

 

 

 

 

 

一、POM依賴(沒問題的

 

 

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.12.RELEASE</version>
	<relativePath/>
	<!-- lookup parent from repository -->
</parent>

<!--PageHelper分頁外掛-->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.1.3</version>
</dependency>

 

 

 

 

配置檔案

 

# 主資料來源,預設的
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#注意SpringBoot2.0+ 這裡的資料來源url是: jdbc-url 而不是 url
spring.datasource.url=jdbc\:mysql\://localhost\:3306/slave?useUnicode\=true&autoReconnect=true&useSSL=false&characterEncoding\=utf-8&useSSL=true&allowMultiQueries=true
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root



#===========pagehelper外掛的配置使用的是預設的引數,因此下面不需要配置,知道就行

#pagehelper.helperDialect=mysql
#pagehelper.reasonable=true
#pagehelper.supportMethodsArguments=true
#pagehelper.params=count=countSql

 

 

如上配置,沒有問題!!!!!

 

 

 

 

 

 

二、POM依賴,升級PageHelper版本至1.2.+(有問題

 

 

 

同步GitHub上的版本,更新到最近的1.2.7版本如下

 

 

 

 

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.12.RELEASE</version>
	<relativePath/>
	<!-- lookup parent from repository -->
</parent>

<!--PageHelper分頁外掛-->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper-spring-boot-starter</artifactId>
	<version>1.2.7</version>
</dependency>

 

 

 

 

配置檔案properties需要改動一下,將原來的

 

pagehelper.helperDialect=mysql

 

改成

 

pagehelper.dialect=com.github.pagehelper.dialect.helper.MySqlDialect

 

 

因為Mybaits的版本在5.1.+後,這個地方有所變動

 

如果,你不改的話,仍然使用5.1.0之前的版本那種配置的話,專案啟動是正常,但是查詢的時候會異常

 

 

 

 

 

後臺Console報錯如下

 

 

### SQL: select                  id,name,sex               from  user                       WHERE             id in (1,2) LIMIT ?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 8
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 8

 

 

提示查詢語句語法有問題?

 

 

解決辦法(其實也不是解決辦法,就是這樣做的),如上述說的,改PageHelper外掛的配置

 

pagehelper.dialect=com.github.pagehelper.dialect.helper.MySqlDialect

 

 

改過來之後,重啟專案,然後再次查詢

 

 

 

 

 

這個問題因個人能力有限,無法跟蹤問題,坐等作者解答吧

 

 

 

 

 

所以,最好的結合就是

 

spring-boot-starter-parent      :1.5.12.RELEASE   (2.0以下的均可)

pagehelper-spring-boot-starter  :1.1.3  (同樣,1.2.0以下)

 

 

 

注意,PageHelper 1.1.0 +和 PageHelper 1.2.0+的區別 

 

 

1.2.0之前的:pagehelper.helperDialect=mysql

1.2.0之後的:pagehelper.dialect=com.github.pagehelper.dialect.helper.MySqlDialect

 

 

 

 

 

三、Spring Boot 1.0和2.0版本對比

 

 

(1)資料來源不同

 

Spring Boot 1.0+  : spring.datasource.url = 資料來源


Spring Boot 2.0+  : spring.datasource.jdbc-url = 資料來源

 

 

(2) SpringBootServletInitializer類所在的包

 

 

Spring Boot 1.0+  : 

import org.springframework.boot.web.support.SpringBootServletInitializer;


Spring Boot 2.0+  : 

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

 

 

(3)DataSourceBuilder類所在的包

 

 

Spring Boot 1.0+  : 

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;


Spring Boot 2.0+  : 

import org.springframework.boot.jdbc.DataSourceBuilder;

 

 

四、最後

 

 

(1)不要以為版本高就是好的,就是亮點,就能吸引我們冒險去升級我們專案中的依賴版本

 

(2)Spring-Boot 2.0+ 不支援  pagehelper-spring-boot-starter 1.1.0+版本,應該說 pagehelper-spring-boot-starter 1.1.0+和Spring-Boot 2.0+不相容才對,但是1.2.0+又存在我上述講過的問題

 

(3)Spring-Boot 2.0+的特性不適合我,目前專案中也用不到,所以建議不要急著升級Spring Boot的版本

 

(4)結論

 

 

 

 

  

 

相關文章