记一下Spring整合MyBatis踩的坑

1.applicationComtext.xml配置

2.pom.xml配置

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.13</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.4.RELEASE</version>
</dependency>

<!--ORM框架-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.4</version>
</dependency>

<!--log4j日志-->
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

<!--log4j接口层-->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>2.0.0-alpha1</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>2.0.0-alpha1</version>
</dependency>
<!--aop联盟-->
<dependency>
  <groupId>aopalliance</groupId>
  <artifactId>aopalliance</artifactId>
  <version>1.0</version>
</dependency>
<!--Mybatis整合Spring-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.4</version>
</dependency>

<!--Mysql驱动程序-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.32</version>
</dependency>

<!--连接池-->
<dependency>
  <groupId>com.mchange</groupId>
  <artifactId>c3p0</artifactId>
  <version>0.9.5.5</version>
</dependency>

<!--开启事务支持-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>

<!--开启Spring对jdbc支持-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>

<!--spring测试支持-->

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>5.2.4.RELEASE</version>
</dependency>
<!--jstl支持-->

 把dao下的映射文件也让maven识别并且编译

<finalName>SpringIntegrateMyBatis</finalName>
<plugins>
  <!--为了保证包目录下的配置文件在编译后能够发布到执行目录,需要指定编译后生成的文件内容
  不过不这样指定,maven认为src/main/java目录下的是java源文件。而xml文件他是不会管的,所以
  需要指定xml也被编译然后发布到执行目录
  -->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>

3.第一坑

如图红字,如果两边都指定了,会报如下的错误
Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.zero.mapper.BooksMapper.BaseResultMap
解决方法,只选择一处指定映射文件所在位置即可

4.第二坑

 好不容易把上面的问题解决了,结果连接数据库的时候你告诉我连不上?
Access denied for user 'admin'@'localhost' (using password: YES)
出现原因,在属性文件中尽量不要使用username,因为系统中也有个username属性,在取值的时候,直接取成系统的username了
emsp;解决方案,不要将属性文件的用户名设置成username就好

5.第三坑

 本来是测试MyBatis缓存的,结果每次配置完,测试就报如下错误
org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException:
 错误原因,对应的pojo类没有实现序列化接口,而二级缓存技术是需要使用序列化技术的,所以对应的类实现序列化接口即可

如果同时在mybatis配置文件中和spring配置文件中指定了

原文地址:https://www.cnblogs.com/LaughTale/p/12990450.html