1.Type interface com.yd.dao.UserMapper is not known to the MapperRegistry.
出現這個錯誤是因為沒有在Mybatis的核心文件中注冊接口對應的xml文件。
需要在Mybatis的核心配置文件中,將所有的xml文件都進行注冊。
<mappers> <!--每一個mybatis的xml都需要在核心配置文件中進行注冊--> <mapper resource="com/yd/dao/UserMapper.xml"></mapper> </mappers>
2.java.lang.ExceptionInInitializerError
maven工程的資源過濾問題,maven項目默認不會將xml文件都編譯。
手動配置資源過濾即可。
<!--在build中配置resources,來防止我們資源導出失敗的問題--> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
3.Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--導入DJBC驅動--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--連接數據庫URL--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <!--配置用戶名--> <property name="username" value="root"/> <!--配置密碼--> <property name="password" value="root"/> </dataSource> </environment> </environments>
注意配置文件中的 數據庫連接URL 最好別瞎寫配置參數。
修改成如下代碼即可。
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!--導入DJBC驅動--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--連接數據庫URL--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/> <!--配置用戶名--> <property name="username" value="root"/> <!--配置密碼--> <property name="password" value="root"/> </dataSource> </environment>
4.Caused by: java.io.IOException: Could not find resource com/yd/dao/UserMapper.xml
出現這個錯誤直接斷定為maven配置中忘記配置忽略文件。
<build> <!--配置maven對resources文件過濾--> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
5.Caused by: java.sql.SQLException: Error setting driver on UnpooledDataSource. Cause: java.lang.ClassNotFoundException: Cannot find class: #{driver}
配置文件中獲取db.properties文件中的參數問題,應用${}獲取而不采用#{}。
<dataSource type="POOLED"> <!--導入DJBC驅動--> <property name="driver" value="${driver}"/> <!--連接數據庫URL--> <property name="url" value="${url}"/> <!--配置用戶名--> <property name="username" value="${username}"/> <!--配置密碼--> <property name="password" value="${password}"/> </dataSource>
6. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yd.mapper.UserMapper.getUser
因為mapper接口中的方法名字沒有和配置文件中的id相互對應。
public interface UserMapper { public List<User> getUser(); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yd.mapper.UserMapper"> <select id="getUser" resultType="com.yd.pojo.User"> select * from user </select> </mapper>
因為是通過xml文件中的id去接口所以需要mapper接口中的方法名和xml配置文件中的id名一致,才能找得到。