问题一:Failed properties: Property 'systemPropertiesModeName' threw exception;
错误原因:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:*.properties</value>
</list>
</property>
</bean>
和
<!-- 读取配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
Springmvc + Mybatis两种方式最好不要同时配置,特别是不能再spring-mvc配置文件中使用了前者,又在mybatis配置文件中使用后者
问题二:Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Aspect
解决:缺少aspectjweaver-XXX.jar包,导入即可
或者pom.xml文件中添加依赖:
<dependency>
<groupId> org.aspectj</groupId >
<artifactId> aspectjweaver</artifactId >
<version> 1.8.9</version
</dependency>问题三:Cannot find class [com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean] for bean with name 'sqlSessionFactory' defined in class path resource [spring-mybatis.xml];

解决:mybatis-plus的sqlSessionFactory整合有问题,换成普通的mybatis即可(mybatis-plus整合???)
<!-- 3.配置mybatis框架核心对象SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-configure.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- MyBatis 动态实现 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 对Dao 接口动态实现,需要知道接口在哪 -->
<property name="basePackage" value="com.jishou.mapper" />
</bean>
问题四:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.jishou.mapper.StudentMapper.selectAllStu
解决:即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。
Mapper接口开发需要遵循以下规范:
Mapper.xml文件中的namespace与mapper接口的类路径相同。
Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
原因:Mapper.xml和Mapper.java放在同一个包下即可

问题五:mapper.xml似乎写得都正确,但是语句中一直存在空格或换行问题
如果将sql语句复制到sql工具中,去除空格和换行后执行又正确。
DELETE FROM Student WHERE ID in (4107)
11:53:08.395 [http-nio-8080-exec-122] ERROR druid.sql.Statement - {conn-10005, pstmt-20001} execute error. DELETE FROM Student WHERE ID in
(
?
)
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' DELETE FROM Student WHERE ID in
(
4107
)' at line 1
原因:mapper.xml文件有问题。标签前后中不小心手动加了空格,但是肉眼看不出来
错误:以下语句看似正确,实际上DELETE,foreach标签,#{id}前都是通过空格缩进,所以mybatis生成的语句就会有多余的空格和空行,导致无法执行
<delete id="delBatchStudent" parameterType="java.util.ArrayList">
DELETE FROM Student WHERE ID in
<foreach collection="list" separator="," open="(" close=")" item="id">
#{id}
</foreach>
</delete>正确:使用Tab键进行缩进,或者所有标签语句写到一行里
<delete id="delBatchStudent" parameterType="java.util.ArrayList">
DELETE FROM Student WHERE ID in
<foreach collection="list" separator="," open="(" close=")" item="id">
#{id}
</foreach>
</delete>