搭建SSM框架時,總是遇到這樣那樣的問題,有的一眼就能看出來,有的需要經驗的積累。現將自己搭建SSM框架時遇到的典型問題總結如下:
一、Struts2框架下的action中無法使用@Autowired自動注入Bean(運行時bean總是為null)
常見原因:
A、Spring的配置文件中組件掃描路徑錯誤(即<context:component-scan base-package="xx.xx" />配置錯誤)。
B、@Autowired聲明的beanName錯誤,bean的名稱一定要在容器中注冊過。
C、缺少struts2-spring-plugin-X.jar(X為版本號)。
二、Cannot load JDBC driver class 'org.sqlite.JDBC')
常見原因:
缺少sqlite的驅動(注意需要使用sqlite-jdbc-3.6.14.1.jar而非sqlite3.jar)。
三、Mybatis接口參數無法傳到SQL中,SQL執行時參數始終為null
常見原因:
接口如何傳入是單一的參數,SQL中直接使用參數名稱即可,或者使用#{0};如果是多個參數,需要使用@Param聲明變量名
傳入單個參數時示例如下:
接口:public String getUserNameById(String userId);
映射SQL:SELECT USER_NAME FROM USER WHERE USER_ID = #{userId}
傳入多個參數時示例如下:
接口:public String getUserNameByIdAndPwd(@Param("userId")String userId, @Param("userPwd")String userPwd);
映射SQL:SELECT USER_NAME FROM USER WHERE USER_ID = #{userId} AND USER_PWD = #{userPwd}
四、Spring文件中配置sqlite連接問題
DataSource配置如下:
<property name="driverClassName" value="org.sqlite.JDBC"></property>
<property name="url" value="jdbc:sqlite::resource:SM.db"></property>
其中:resource:是關鍵字,添加此關鍵字后,sqlite的DB放在項目跟目錄下即可。當然,也可以使用絕對路徑:
<property name="url" value="jdbc:sqlite:E:\workspace\StockManagement\db\SM.db"></property>