新手踩坑,今天用mybatis-plus的自动分页功能,按照官方文档中给出的关于分页功能的配置配好之后,在测试类中运行测试代码,发现出问题了,报了一个很奇怪的异常,网上搜索半天,没有答案,异常如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM ( SELECT id,qst_id,qst_content,opa,opa_score,opb,opb_score,opc,opc_score,opd,opd_score,max_score,create_time,update_time,is_deleted FROM question WHERE is_deleted=0 # é€»è¾‘æœªåˆ é™¤å€¼(默认为 0) ) TOTAL ### The error may exist in com/trisirt/exam/psycho_test/dao/QuestionMapper.java (best guess) ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM ( SELECT id,qst_id,qst_content,opa,opa_score,opb,opb_score,opc,opc_score,opd,opd_score,max_score,create_time,update_time,is_deleted FROM question WHERE is_deleted=0 # é€»è¾‘æœªåˆ é™¤å€¼(默认为 0) ) TOTAL ......
可以看到mybatis-plus底层在自动生成sql语句时产生了乱码,导致sql语句无法被mysql解析,出现错误。最后花了一上午的时间,通过新建另外一个项目,从头开始配置springboot环境,最终定位到了出错的地方:
我的项目之前配置了逻辑删除的功能,当时按照官网给出的配置,没有注意到其中一个细节:
我的天,就是上面那句,“3.3.0版本以后可以忽略步骤2的配置”,而我的mybatis-plus版本是3.3.1,在apllication.properties
文件中配置了逻辑删除的属性之后,又在实体类的字段上打了@TableLogic
注解,最终就酿成了上面分页功能翻车,裂开!记录一下。
将上面实体类中的@TableLogic
注解删掉,问题解决,测试类中分页功能正常。