关于spring-mybatis,有两个标签:@MapperScan 、@Mapper和两个配置:mybatis.type-aliases-package与mybatis.mapper-locations,经常在各个配置文件中看到,用于spring结合mybatis使用,有时候可能会有点弄混了,什么情况下必须使用?简单介绍下。
这两个标签作用其实一样,可以理解为一个是整体配置,一个是单独配置;
作用是扫描指定包下面的接口类,进而生成mybatis的代理类;
多种配置,可以指定多个包:
(1)一个包:
(2)多个包:
(3)通配符:
@MapperScan是会自动扫描包下面的接口类,类似会给每个接口类自动加上@Mapper。
@Mapper可以单独使用,不使用@MapperScan,同时使用也不会报错;
第一个mybatis.type-aliases-package可以不用管,它的作用是指定实体类所在包,然后在xml参数中就可以不写包名;
例如:
假如配置了type-aliases-packag:
parameterType就可以省去包名,直接更改为:parameterType="User",意义不大;
这个配置还是很有作用的,用户标记或者指定mybatis对应xml的路径;
两个情况:
第一个是使用mytatis-genarator默认生成的mybatis接口类与xml再同一目录下,这个时候可以不设置这个配置,也能正常加载和使用,如下可以不使用这个配置;
第二种,一般项目中会把mybatis的xml集中管理,放到resources下去,就需要指定下路径了。
如下就需要设置该配置:
mybatis的xml路径下需要配置下:
这个错误就是没有找到xml文件,造成该错误的有以下情况:
(1)springboot初始化项目,默认是没有打包xml文件到target下面的,需要在build中指定下;
(2)mybatis生成xml没有跟接口类在同一目录下,需要配置mybatis:
mapper-locations: classpath:mapper/*.xml,否则也会报找不到执行的statement。
通过mybatis-generator生成的接口实体类和xml默认在同一目录下,这个时候只需要在启动类上配置:
@Mapper标签、mybatis.type-aliases-package、mybatis.mapper-locations都可以不用配置;
更多信息请关注:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。
| 留言与评论(共有 0 条评论) “” |