SSM整合問題清單
SSM其實使用很簡單。但是初次整合其實還挺麻煩,因爲平時也不做這個。然後就會有各種問題
SSM框架——詳細整合教程(Spring+SpringMVC+MyBatis) 這是人家寫的一篇博客,我參照這個整合的。但是實際有些東西不一樣
地址 我這個還沒結束。功能還沒有。後續會持續更新
git clone https://gitee.com/dengtiantian/javaee_study.git
本篇博客是我遇到的問題清單
我是用IDEA,maven 搭建的
- ERROR com.alibaba.druid.pool.DruidDataSource - {dataSource-1} init error java.sql.SQLException: com.mysql.cj.jdbc.Driver
我發生這個的原因是沒有導入MySQL-connector包.我以爲導入了Spring-jdbc就可以了。修改方法就是在pom.xml添加這個包.讓maven導入
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
- No constructor found in com.code.pojo.UserAccount matching [java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.sql.Timestamp]
我發生這個問題的原因是UserAccount裏面沒有無參構造函數(因爲我自己寫了個構造函數,所以系統不會自動生成無參構造函數) 解決辦法:添加構造函數
前面其實還有一大段,但是就是這個引起的,看報錯要先看第一個報錯,第一個報錯裏面可能是好多錯誤原因,從最後一個開始看。因爲解決了一個,可能都是由那個引起的。如題目,是namespace爲空引起的。因爲我的mapper不是自動生成,是我自己寫的。有些就漏掉了 解決辦法:添加namespace
<mapper namespace="com.code.dao.IUserAccountDao" >
- Invalid bound statement (not found): com.code.dao.IUserAccountDao.getUserAccountById
三步教你解決Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx錯誤!!!很簡單
我的方式是檢查了下applicationContext.xml文件這部分內容是否有錯。本來就是映射有問題
<!-- Mybatis 和 Spring整合,不需要要Mybatis的配置映射文件-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--掃描com.code包-->
<property name="typeAliasesPackage" value="com.code.dao"/>
<!--掃描mapper文件-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!--Mapper 動態代理,掃描dao接口包-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 給出需要掃描Dao接口包 -->
<property name="basePackage" value="com.code.dao"/>
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
- org.apache.ibatis.type.TypeException: Could not resolve type alias
這個問題的原因是 resultMap和resultType問題。檢查下
<select id="getUserAccountById" resultType="com.code.pojo.UserAccount" parameterType="int">
select id,useraccount,chinesename,password,isdeleted,modifydate from useraccount where id = #{id}
</select>
- 這個錯誤排不上號,但是也是很常見的:就是我查詢的結果發現有個值是null,但是數據庫有數據。
我本來以爲是中文的問題,然後把另外一個值改成中文發現沒問題。然後我仔細看看,後面發現是拼寫錯誤
我的數據庫是chinesename,但是我的實體表是chinesname(少了個e)。這種拼寫錯誤也挺常見。建議裝一個插件:alibaba Java Coding Guidelines。阿里巴巴Java開發規範。不僅僅能檢查拼寫問題