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 含有表table,database 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> <!-- 對於字符串的判斷必須使用 ' 才行 -->