我们在使用mybatics的时候,在我们的xml编写之中,偶尔会遇到Cannot find class: BaseResultMap这样的问题,但是我们都很清楚的看到了,自己确确实实的定义了这样一个BaseResultMap类,那么这究竟是什么样子的问题呢?就由我给大家带来简单而又高效的解决办法吧。 

  1. 我们先来说一下解决办法吧,其实很简单,第一是你要确认我们定义了这么一个BaseResultMap,并且没有拼错以及一些语法错误,正确的方案如下图所示:

    Cannot find class: BaseResultMap解决方法_python

  2. 2

    但是我们仍然是遇到了这么一个问题,那就是Cannot find class: BaseResultMap,这个也直接导致了我们的bean初始化失败的情况,那么具体是什么问题呢,问题其实在于我们的返回类型上面,没错,就是返回类型,xml的加载是标题式的加载,也就是即便我们还没有运行这个函数,在我们的bean加载的时候,就已经将我们的标签全部解析了。

    Cannot find class: BaseResultMap解决方法_spring_02

    Cannot find class: BaseResultMap解决方法_数据库_03

  3. 3

    重点就在于我们的这个resulttype上面,type是不管用的,因为我们返回的并不是一个int或者char类型,而是返回一个map,所以我们需要把我们的resultType改成resultMap才可以,这样我们的项目就可以成功运行了,如下图:

    Cannot find class: BaseResultMap解决方法_数据库_04

    Cannot find class: BaseResultMap解决方法_mysql_05

  4. 4

    最后我们在来解释一下啊type和map的具体影响,以及他们具体的使用策略,result这个类型一般是在我们的select查询语句中会用到,resultType可以直接表示返回类型,但是resultMap不同,它是对外部ResultMap的一个引用,这里就要注意了,这个是对“外部”的引用,换句话说,就是定义在xml之外的那个实体的相关引用,而不仅仅是我们在mybatics xml里面写到的那个,如果没有外部的实体,这个返回依然不可行。

    Cannot find class: BaseResultMap解决方法_python_06

  5. 5

    而且不要认为我们的resulttype就只能返回一个int,他也是可以返回一个类的,如下图:

    这个规则同样在我们的paramtype中也适用。

    同样,他的返回甚至也可以是一个map,mybatics会自动将其转化为一个list类型来进行传值操作

    Cannot find class: BaseResultMap解决方法_python_07

  6. 6

    最后,在xml编写之中,还有一个很容易犯错的地方需要提醒大家,那就是外部的url,最好使用绝对路径的方式来解决,因为这样,才能保证在bean初始加载的时候,可以找到我们所需要的文件。

    Cannot find class: BaseResultMap解决方法_python_08

    END

注意事项

  • resulttype可以返回map,但是不能返回我们在xml里面定义的resultmap

  • 多表查询最好使用resultmap进行返回,这样会更加清晰的知道这个map里面有多少参数以及他们的类型

@@@Cannot find class: BaseResultMap解决方法