spring boot + mybatis 錯誤一覽

1. 運行mybatis自動生成代碼時,出現如下錯誤:java

緣由是缺乏時區的設定,須要加入 serverTimezone=GMT%2B8mysql

<!--數據庫連接URL,用戶名、密碼 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/user_center?serverTimezone=GMT%2B8" userId="root" password="password">
        </jdbcConnection>

其實還有另外一種寫法:spring

<!--數據庫連接URL,用戶名、密碼 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/user_center" userId="root" password="password">
	<property name="serverTimezone" value="GMT%2B8"/>
</jdbcConnection><!--MySQL 8.x 須要指定服務器的時區-->

2. 運行mybatis自動生成代碼時,出現提示:  Project src does not existsql

在src前加上項目名!!!如:數據庫

<!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.cjsz.usercenter.mybatis.model" targetProject="user-center/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

且 src/main/java、src/main/resources是不可以拆開的,不然不會提示Project src does not exist,也不會在對應目錄生成文件!!服務器

3. 當生成完成後,出現的代碼與咱們預料的不大同樣,在model裏出現不少不知道哪裏來的其餘字段,此時控制檯提示:mybatis

Table Configuration scheme.table matched more than one table(xxx.table ... xxy.table ...)

這是由於,你的mysql數據庫中,不只你須要生成的database xxx 含有表tabledatabase xxy裏也含有表table,因而它會將匹配到的全部表的字段都生成出來。app

解決方法:加入 nullCatalogMeansCurrent=truespring-boot

<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/wyait?serverTimezone=GMT%2B8" userId="root" password="password">
	<!-- 防止匹配到其餘database裏的相同名字的表 -->
	<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>

4. 在使用mybatis操做數據庫時,出現相似1的錯誤,處理同樣,只不過是在application.properties的mysql配置中加上時區。spa

5. 出現找不到mapper這樣的錯誤時,檢查配置文件中

mybatis.mapper-locations=classpath*:mapping/*Mapper.xml
mybatis.type-aliases-package=com.cjsz.usercenter.mybatis.entity

是否與你實際的路徑相匹配。

6. 使用mybatis時,啓動工程出現如下相似的錯誤:

The alias 'GeneratedCriteria' is already mapped to the value 'com.cjsz.management.mybatis.model.MstRoleExample$GeneratedCriteria'.

具體緣由未知,因該是版本問題

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.1</version>
</dependency>

這裏版本未2.0.1時會出現上面的錯誤,改成2.0.0

7. if text 失效

<if test="isDelete != null and isDelete != ''">
    and 
      m.is_delete=#{isDelete}
</if>

<!-- 當傳入的 isDelete = null時出錯。    == 數據庫類型爲char  -->

解決方法:

<if test='isDelete != null and isDelete != ""'>
    and 
      m.is_delete=#{isDelete}
</if>

<!-- 對於字符串的判斷必須使用 ' 才行 -->
相關文章
相關標籤/搜索