有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Mybatis无效绑定语句(未找到)

环境:maven,spring 4.2.4-RELEASE,2个模块:zscb服务器zscb common和依赖于zscb common的zscb服务器

我的网络。xml核心代码:

  <listener>
    <listener-class>com.iidooo.core.listener.RoleResourceInitListener</listener-class>
  </listener>

我的模块zscb common中有一个init侦听器:

RoleResourceInitListener核心代码:

 public void contextInitialized(ServletContextEvent arg0) {
        try {
            ServletContext sc = arg0.getServletContext();
            SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) SpringUtil.getBean(sc, "sqlSessionFactory");

            SqlSession sqlSession = sqlSessionFactory.openSession(true);
            SecurityRoleMapper roleMapper = sqlSession.getMapper(SecurityRoleMapper.class);
            List<SecurityRole> roleList = roleMapper.selectAll();

            // key: roleID value:List<SecurityResource>
            Map<Integer, List<SecurityResource>> roleResourceMap = new HashMap<Integer, List<SecurityResource>>();
            for (SecurityRole item : roleList) {
                roleResourceMap.put(item.getRoleID(), item.getResourceList());
            }
            sc.setAttribute(ServletConstant.ROLE_RESOURCE_MAP, roleResourceMap);
        } catch (Exception e) {
            e.printStackTrace();
            logger.fatal(e);
        }
    }

我的应用程序上下文。xml:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.iidooo.core.mapper com.edo.zscb.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

我已经查过地图了。xml的名称:

<mapper namespace="com.iidooo.core.mapper.SecurityRoleMapper">

当我运行tomcat时,出现了错误

Mybatis Invalid bound statement (not found)

谁能救我


共 (2) 个答案

  1. # 1 楼答案

    谷歌搜索MapperScannerConfigurer导致documentation声明的第一个结果:

    The basePackage property can contain more than one package name, separated by either commas or semicolons.

    而你的包裹被一个空格隔开

  2. # 2 楼答案

    在Mybatis中,如果以类似getMapper(YourMapper.class)addMapper(YourMapper.class)的方式添加映射器,则有必要将相对YourMapper.xml保留在同一源包中

    在maven中,还需要包含xml文件作为资源,并且它们必须位于生成的.class文件的相同位置

    因此,在pom.xml文件的<build>部分中会有类似的内容:

       <build>
            ...
            <resources>
               <resource>
                  <filtering>false</filtering>
                  <directory>src</directory>
                  <includes>
                    <include>**/package_path/to/your/*.xml</include>
                  </includes>
               </resource>
            </resources>
           ...
       </build>
    

    有了这个配置,maven将离开。xml文件位于与源代码树中相同的位置