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