錯誤記錄

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的值,不然就會報如上錯誤的。

相關文章
相關標籤/搜索