2019/03/24
使用mybatis-generator出現的錯誤:
1. java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
緣由:jdk版本與mysql版本衝突
解決: 一、jdk7+老版5.0驅動com/mysql/jdbc/Driver
二、jdk8+新版6.0驅動com/mysql/cj/jdbc/Driverjava
2.鏈接數據庫時區異常
ERROR: The server time zone value ‘****’ is unrecognized or represents more than one time zone
提示系統時區出現錯誤
解決:
將jdbcUrl寫爲:jdbc:mysql://localhost:3306/exam?characterEncoding=utf8&serverTimezone=UTC
在xml的配置文件中;要用 &代替。mysql
3.列名爲空異常
Column name pattern can not be NULL or empty
緣由:工程引用了mysql-connector-java-6.0.3.jar.
解決:使用5.x版本,eg:mysql-connector-java-5.1.38.jar,或更低版本
記得改回原來的驅動名spring
4.運行maven整合的ssm框架,出現sql
nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Around錯誤數據庫
緣由:差aspect,AOPapache
解決:配置pom文件mybatis
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>app
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${org.springframework.version}</version>
</dependency>框架
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>maven
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
5. ssm整合。
nested exception is org.apache.ibatis.binding.BindingException: Parameter 'keyword1' not found. Available parameters are [arg1, arg0, param1, param2]
緣由:List<User> selectAll(String keyword1, String keyword2);
dao層方法參數沒有註解。注意:是dao層(也有叫mapper層),在此添加註解.
解決1:List<User> selectAll(@Param("keyword1")String keyword1, @Param("keyword2")String keyword2);
解決2:<where>
<if test="keyword1 !=null and keyword1 !='' and keyword1 != 'undefined'">
loginName LIKE "%"#{arg0}"%"
</if>
<if test="keyword2 !=null and keyword2 !='' and keyword2 !='undefined'">
AND state LIKE "%"#{arg1}"%"
</if>
</where>
5.測試ssm框架訪問數據,出現以下錯誤
java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract
解決方案:添加依賴(注意:不是c3p0數據源依賴,因爲c3p0 版本過低形成,從新下載Maven依賴包)
<dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency>
6.Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]
這個問題總是出現,最後發現想錯了一件事。
以前一直認爲,只要mapper層下的接口方法參數,與mapper.xml文件接收的參數值相同,就能夠,不用添加註解,不管參數個數有多少個,均可以映射。
最後發現這個想法,是錯誤的。
若是參數只有一個,上述說法正確,參數名只要同樣便可;若是參數兩個以上,則必須在參數上添加註解才能夠。
2019/04/10錯誤記錄
1.mybatis報錯:A query was run and no Result Maps were found for the Mapped Statement
仔細查看mybatis的配置文件,發現遺漏一個屬性:resultType
報錯的配置是:<select id="ID" parameterType="java.util.Map">
正確的配置應該是<select id="ID" parameterType="java.util.Map" resultType="java.util.Map">
最後總結下,就是mybatis中的全部查詢,都必須返回resultType或者resultMap的值,不然就會報如上錯誤的。