使用idea 整合 spring+mybatis 的 java 配置 以及遇到的坑
发布日期:2021-05-14 10:39:01 浏览次数:16 分类:精选文章

本文共 1587 字,大约阅读时间需要 5 分钟。

在配置Spring+MyBatis的Java项目时,常常会遇到一些设置问题。下面详细记录了与我在项目过程中遇到的问题及解决方案,希望能对你有所帮助。

  • 数据配置类的正确配置
  • 在数据配置的Java类中,需要完成以下几项工作:

    • 在类上添加相关注解:
      @Configuration
      @PropertySource("classpath:jdbc.properties")
      @MapperScan(basePackages = "Activiti.mapper")
      public class DataConfig {
      //...
    • 在类内部定义SqlSessionFactoryBean,并正确设置数据源、映射文件位置及别名:
      @Bean
      public SqlSessionFactoryBean sqlSessionFactoryBean() throws IOException {
      ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
      SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
      factory.setDataSource(dataSource());
      factory.setMapperLocations(resolver.getResources("classpath:/mapper/*/*.xml"));
      factory.setTypeAliasesPackage("powerx.io.model");
      return factory;
      }
      //...
    注意事项:
    1. 其中@MapperScan注解的`basePackages="Activiti.mapper"`中的`Activiti`应替换成你的实际包名,确保端口的UserMapper.java、HomeMapper.java等类位于该路径下。
    2. 映射文件路径`classpath:/mapper/*/*.xml`必须指向你项目中存放Mapper XML文件的位置。如果XML文件与Java文件放在一起,IDEA通常不会将这些文件自动编译,导致读取不到问题,需确保文件路径正确。
    2. **Service层注入Mapper的问题**
    在Service层注入Mapper时,可能遇到以下错误:
    ```java
    No qualifying bean found for @Autowired 'mapperUser'

    解决这个问题需要执行以下操作:

    • 安装MyBatis插件 打开IDEA,进入File -> Settings -> Plugins,搜索并安装MyBatis Plugin。这是解决此类问题的基础,确保插件正常运行。

    • 修改注入方式@Autowired注解替换为@Resource

      @Resource
      private UserMapper mapperUser;

      以上两步即可解决注入问题,之后编码操作正常可用。

    1. 常见问题总结
    2. 在实际使用过程中,还需注意以下几点:

      • 配置文件路径:确保DBC数据源、Mapper文件及相关配置文件路径正确无误。

      • 插件依赖:安装MyBatis插件需要 GRALEGOOL plutin 常规步骤,那些不耐心安装插件但直接运行“DataBase Browser”的行为可能导致很多问题。

      • 编码规范:遵循MyBatis的编码规范,避免使用混乱的命名,确保所有配置和属性名的唯一性。

      通过以上步骤,大多数配置问题均可顺利解决,开发过程中遇到类似问题,可重新检查以上各项,尤其是看注解是否应用正确,无论是哪种框架,代码注解都是关键所在。

    上一篇:华为云服务器及OCR研究
    下一篇:处理spring security 自定义 登录 页面 直接返回登录页面,不走验证登录流程

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年05月04日 10时37分41秒