spring mvc+mybatis+dbcp+maven多模块项目的搭建遇到的问题(二)

现在开始连接数据库还有测试的踩坑之旅

mybatis生成数据

用mybatis生成entity和mapper和mapping的时候,重新生成了一遍那个client类,发现下面成功不是空指针的测试的时候有报错,resultmap already contains之类的,发现在那个xml文件里面有两个id为BaseResultMapper的resultMap,应该是生成的时候除了bug,不知道那个override属性有什么用

java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
自行写测试的函数和sql,主要报错:autowired报引用的service是空指针,但是配置感觉没问题

Service模块的test文件夹下面创建测试类,

public class AppTest 
{
    @Autowired
    OrderMainOrderService orderMainOrderService;
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }

    @Test
    public void orderListTest(){
        System.out.println(orderMainOrderService.searchOrderList("2018-05-17 0:00:00","2018-05-23 0:00:00","赵四",1));

    }
}

直接报空指针异常,如果加上头上面的注解


直接挂红灯,因为那些配置文件在web层,web层依赖于Service,果断放弃。

在web层加了个test包(可能因为创模块的时候的问题,好像没有test目录)

测试报了错,还好不是空指针

继续踩坑 报了其他错:主项目build错误

网友说多模块的话需要build之后才能引用其他模块的东西,可能web是因为这样才不能获取service的

但是build报错 Error:java: Compilation failed: internal java compiler error

IntelliJ Idea编译报错:javacTask: 源发行版 1.8 需要目标发行版 1.8(可能是1.7但是项目是1.8的)

照着之前网上的说法去settings-compiler-java compiler-设置module的compiler,看到这里面的都是1.7什么的,改完了会自动退回

网友说的版本:https://blog.csdn.net/u013041642/article/details/78934157

新建的多模块maven项目,有时候会有个专门的module用来部署服务,各种配置文件几种在这里。配置spring的配置文件的时候,

component-scan想用来扫描其他module下的包,但却识别不了,因为要部署的module的pom中引了其他module的依赖以后,当前

项目中其他的module还没有打包,所以找不到。给整个工程编译打包一下就可以了。

想起之前学长配置了项目编译的java版本,在父项目的pom.xml里面设置build,这个跟dependencyManagement同级

<build>
        <finalName>ecar_parent</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>

            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

最后项目正常build:


继续报错java.lang.NoClassDefFoundError: javax/servlet/ServletContext
谷歌了一下:看到国外的问答:

理解一下总之缺了dependency,然后意识到web层可能没有这个依赖,但是父项目的pom.xml是有的,暂时记住这个。

mybatis识别sql错误

如果传一个sql当作参数,需要在传入sql的时候写成:@Param(value="sql")String sql

在xml里面写成:

  <select id="searchOrderList" resultMap="BaseResultMap" parameterType="java.lang.String">
    ${sql}
  </select>

还有就是日期使用引号传入、or查询的时候加入小括号不然会先执行and然后再执行or 等小错误,最后都解决了。

猜你喜欢

转载自blog.csdn.net/searlas/article/details/80354874