错误记录

2019/03/24
使用mybatis-generator出现的错误:
1. java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
原因:jdk版本与mysql版本冲突
解决: 1、jdk7+老版5.0驱动com/mysql/jdbc/Driver
2、jdk8+新版6.0驱动com/mysql/cj/jdbc/Driver

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的配置文件中;要用 &代替。

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,或更低版本
记得改回原来的驱动名

4.运行maven整合的ssm框架,出现

nested exception is java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Around错误

原因:差aspect,AOP

解决:配置pom文件

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>

<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>

<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的值,否则就会报如上错误的。

 
posted @ 2019-03-24 15:22  王大军  阅读(460)  评论(0编辑  收藏  举报