mybatis-plus异常问题记录

mybatis-plus 问题记录
异常 : java.lang.NoSuchFieldError: CUBRID
原因: jar包冲突
问题出处: maven 聚合工程 PO模块的 mp 的注解包 与 父工程的 mp 包版本不一致导致

  <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.3.4</version>
      </dependency>
      <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-annotation</artifactId>
        <version>3.4.3.4</version>
        <scope>compile</scope>
      </dependency>

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

1情况报错 描述
(1-1)配置文件正确  `classpath:/mapper/*.xml` 但是启动报错   创建bean时  找不到xml ;
(1-2)配置文件 加上了星号 `classpath*:*/mapper/*.xml`启动不报错; 但是运行查询语句 找不到XXmapper的查询方法
(1-3)	去除@MapperScan , mapper上添加 @Mapper 报错 找不到 创建xxmapper
		最后3.4.3.1 升级到  3.5.1  配置文件是它(根据情况自行配置)  `classpath:/mapper/*.xml`  正常运行

仔细检查你的 XML 对应情况 1-1 的配置正确 ,启动报错 创建bean时 找不到xml ;
这个XMl是肯定有问题的;
mapper的 namespace
resultMap的 type 对应的 pojo 路劲 (type 的类型别名 检查)
-检查配置
(1-) 启动类开启扫描 @MapperScan(“org.example.xxx.mapper”) 正确

@SpringBootApplication(scanBasePackages = {"org.xx.xx.**"})
@MapperScan("org.xx.xx.mapper") //是否正确
@EnableConfigurationProperties

(2)- xml 中配置的

namespace  对应的mapper 路劲正确 
<mapper namespace="org.xx.xxx.mapper.XXMapper"> 
resultMap type  对应的 pojo 路劲 正确
    <resultMap id="XResultMap" type="org.xx.xxx.pojo.XX"> 
    	sql  id   是否对应 mapper 方法名
 <select id="pageXX" parameterType="org.example.xx.xx.XXQuery" resultMap="XResultMap">

(3)- properties , yml文件中的 mapper.xml文件路劲配置

根据情况使用
默认的
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
自行根据情况修改
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.mapper-locations=classpath*:*/mapper/*.xml
classpath* 代表 扫描 maven多个模块 下的
/**/ 多个或零个任意名称文件夹下

对于IDEA系列编辑器,XML 文件是不能放在 java 文件夹中的,IDEA 默认不会编译源码文件夹中的 XML 文件,可以参照以下方式解决:
将配置文件放在 resource 文件夹中
对于 Maven 项目,可指定 POM 文件的 resource

<build>
  <resources>
      <resource>
          <!-- xml放在java目录下-->
          <directory>src/main/java</directory>
          <includes>
              <include>**/*.xml</include>
          </includes>
      </resource>
      <!--指定资源的位置(xml放在resources下,可以不用指定)-->
      <resource>
          <directory>src/main/resources</directory>
      </resource>
  </resources>
</build>

Error creating bean with name ‘***’ defined in file

  1. 查看 mapper.java 映射的 xml文件是否存在多个

The alias ‘xxx’ is already mapped to the value ‘..xxx’

mybatis-plus:
type-aliases-package: 扫描下 相同的类名 存在多个

Has been loaded by XML or SqlProvider or Mybatis‘s Annotation, so ignoring this injection for

Mybatis-plus 自动生成的sql 执行方法 与 你自定义的 sql方法名 产生冲突;

-Parsed mapper file:‘file [D:xxxx\sys-db\target\classes\mapper\sys\SysUserRoleMapper.xml]’

-未知
1 - 版本问题
2- 配置问题 , xml 路劲扫描问题

根据情况使用
默认的
mybatis-plus.mapper-locations=classpath*:/mapper/**/*.xml
自行根据情况修改
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.mapper-locations=classpath*:*/mapper/*.xml

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: “@P0”附近有语法错误。**

本案是 mssql --sqlserver 2012数据库

生成的语法 SELECT MOId FROM MO OFFSET ? ROWS FETCH NEXT ? ROWS ONLY
sql 正确语法示例 --order by ArtistId offset 页数 rows fetch next 条数 rows only –
缺少 orderby xx desc 需要添加 QueryWrapper.orderByDesc(“ID”);

mssql --sqlserver 数据库 offset 页数 rows fetch next 条数 rows only分页 必须加 排序规则 (orderby xx desc or asc)

数组越界问题

Error querying database. Cause: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

The error may exist in file [D:xxxx\target\classes\mapper\XXMapper.xml]

The error may involve com.fb.sysmes.dao.XXMapper.pageXXX-Inline

The error occurred while setting parameters

解决1-
上述数组越界问题 - 首先是自己写的 动态分页 没有用 其他的分页插件;
本案是 mssql --sqlserver数据库
注意 # 与$ 的区别 分页需要使用 $
pageModel.page pageModel.size 为int类型

  <if test="pageModel.page != null and pageModel.size != null ">
      order by xx.Id desc 
      OFFSET ${pageModel.page} ROWS FETCH NEXT ${pageModel.size} ROWS ONLY ;
    </if>

为啥不用分页插件–数据分页 一直在报错 似乎是
org.apache.shardingsphere ,
mssql ,
mybatiisplus 的分页插件 , (setxx 字段 为空)
分页插件pagehelpe-springboot版 (不显示 banner , setxx 为空)
都存在兼容问题…
问题出处 ------shardingsphere 的sql 有限制 子查询不可以用 函数.
2- 其他博客看到的数组越界问题异常 注意点-- POJO类上 必须存在 无参构造;
Mybatis框架会调用这个默认无参构造器来构造实例对象,即实体类需要通过Mybatis进行动态反射生成。反射的Class.forName(“className”).newInstance();需要对应的类提供一个无参构造器
3- 查询的 结果 为多个 , 返回接收类型 不是 List

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值