dao層不寫實現類容易出現的錯誤及解決方法
這次碰到這個問題費了一番功夫,就想記下來,為以後提個醒,也希望大家能夠看後少走彎路。
我配置的是spring+springMVC+mybatis框架,開始也是借鑑別人的程式碼,看到人家dao層不用寫實現類就能直接對映mapper裡的方法,我也想試試,可是一直報錯,org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.dao.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)},一直找不到原因。
接下來先把部分程式碼和配置檔案粘出來,
首先是spring-mybatis.xml檔案:
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value="${mysql.url}"></property> <property name="username" value="${mysql.username}"></property>接下來是dao層介面:<property name="password" value="${mysql.password}"></property> <property name="driverClassName" value="${mysql.driverClassName}"></property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource"ref="ds"></property> <property name="mapperLocations" value="classpath:mybatis/userMapper.xml"></property> <property name="typeAliasesPackage" value="com.entity"></property> </bean> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="ds"></property> </bean> <tx:annotation-driven transaction-manager="txManager"/>
public interface UserMapper { /** * 判斷使用者登入 * @param userName 登入名 * @return usr 查詢到的使用者 */ User selectUserByName(String userName); }再下來就是userMapper.xml檔案了:
<mapper namespace="com.dao.UserMapper"> <resultMap type="User" id="userResultMap"> <id property="userId" column="id"/> <result property="userName" column="name"/> <result property="password" column="password"/> <result property="mail" column="mail"/> </resultMap> <select id="selectUserByName" parameterType="java.lang.String" resultType="User"> SELECT id AS userId,name AS userName,password,mail FROM user WHERE name = #{userName} </select> </mapper>最後是UserServiceImpl檔案:
@Service("userService") public class UserServiceImpl implements IUserService { private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class); @Autowired private UserMapper userMapper; /** * 驗證使用者登入 * * @param userName 登入名 * @param password 登入密碼 * @return code為1,message為"賬戶或密碼不正確,請重新輸入" * code為2,message為"輸入正確,請等待跳轉" * code為3,message為"密碼不正確,請重新輸入" */ public ResultMessage checkUserLogin(String userName, String password) { ... }其實看到這好多大神應該就能找到問題所在了,是的,就是spring-mybatis.xml中出現的問題,我也是後來才知道的,如果mybtis中不寫dao層的實現類,spring如何為service層注入dao的例項呢,找到兩種方法可以解決。
一種是在spring-mybatis.xml中加入
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.dao.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>還有一種是在spring-mybatis.xml中加入
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dao"></property> </bean>兩種方法其實差不多,第一種是隻能在單個介面的時候使用,如果對映介面很多的話,就需要使用第二種了,這個大家試一下就知道了。
第一次寫部落格,有什麼問題請大家見諒!
相關推薦
dao層不寫實現類容易出現的錯誤及解決方法
這次碰到這個問題費了一番功夫,就想記下來,為以後提個醒,也希望大家能夠看後少走彎路。 我配置的是spring+springMVC+mybatis框架,開始也是借鑑別人的程式碼,看到人家dao層不用寫實現類就能直接對映mapper裡的方法,我也
使用Junit單元測試及操作MySQL數據庫時出現錯誤及解決方法
靜態 方法 簡單 註解 info 正常 mage 返回 基本上 在一次看Mybatis視頻學習過程中,教學視頻中用到了Junit單元測試,因為剛開始學習,會出現許多錯誤,每次出現錯誤都會上網搜索,但是發現基本上錯誤都是這麽幾種: 1、沒有@Test註解 2、測試方法用s
ubuntu安裝g2o時出現錯誤及解決方法
安裝G2O可以用高翔在git上的包,一可以從這裡clone下來git clone https://github.com/RainerKuemmerle/g2o.git 然後進入g2o資料夾,執行cmake編譯 mkdir build cd build
框架學習(1)——service層,dao層和service實現類進行資料庫操作
最近也是比較忙,也只能忙裡偷閒地抓緊時間接著學習一下技術,自從上次學習了maven之後,越來越對框架產生了興趣,下了好多的spring視屏,聽著老師的建議,最近也萌生了看別人的程式碼進行學習的想法,然後就上了知乎搜了搜優秀的java框架,發現了一個比較感興趣的,
mybatis原始碼學習--spring+mybatis註解方式為什麼mybatis的dao介面不需要實現類
相信大家在剛開始學習mybatis註解方式,或者spring+mybatis註解方式的時候,一定會有一個疑問,為什麼mybatis的dao介面只需要一個介面,不需要實現類,就可以正常使用,筆者最開始的時候也會有這種疑問,當時在網上查了很多資料,也問過公
[偶爾遇到]找不到mysql.sock的出現原因及解決方案和mysql 預設mysql.sock位置預設問題探討 不指定
背景:(1)偶爾會出現mysql的server和mysql的client預設的socke檔案不在一個地方,我們用mysql時會出現一個找不到mysql.sock的情況。(2)因非正常關機出現:/tmp/mysql.sock 不見了,找不到了,如何連線上去的問題?(其他機器通過
Windows7 Python-3.6 安裝PyCrypto(pycrypto 2.6.1)出現錯誤以及解決方法
windows python pycrypto 今天準備在Windows系統上基於python3.6安裝一個pycrypto 2.6.1模塊,很不幸的報了一堆錯誤,如下所示:running installrunning buildrunning build_pyrunning build_extw
eclipse中的出現在打包一次後,後面新建的項目都出錯了,出現support_v7下面出現紅線及解決方法及為什麽eclipse中項目繼承ActionBarActivity解決方法一樣
style 寫博客 引用 image back 你在 發現 想法 cti 第一次寫博客,有什麽問題或者想法的希望各位可以進行評論交流,望大家多多包涵! 遇到的問題是在新建的項目都出錯了,出現support_v7下面出現紅線及解決方法及為什麽eclipse中項目繼承Acti
C#Datetimepicker出現問題及解決方法
前幾天公司用的物料管理系統出現了一個很奇怪的問題,具體的現象是:10月31號的那天,物流部的人因為之前的問題,需要將之前已經結轉的9月份取消結轉。 ,當操作人員將10改變為9的時候,出現問題了。程式直接崩潰,並且報了“年、月和日引數描述無法表示的 DateTime” 這個錯誤。經過一系列的除錯 與查資
ssh連接出現的錯誤及解決方法!!!!!!!
1,ssh: connect to host 192.168.1.108 port 22: Connection refused 2,ssh_exchange_identification: read: Connection reset by peer 用ssh相連的兩臺電腦:伺服器ubuntu
java中在使用類時的一些常見錯誤及解決方法
關於java中類的一些常見錯誤及解決方法 1.定義了一個主類,如 public class TestCircle{//此時這裡會顯示“class TestCircle”has never been used“ public void main(String[] args){…}; class
【MongoDB】MongoDb的“not master and slaveok=false”錯誤及解決方法 mongo連線從庫出現問題
連結mongodb報錯如下 2016-03-14T16:26:00.912+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "cod
ubuntu16.04安裝網易雲音樂方法出現問題及解決方法
關於Ubuntu系統常用軟體安裝我建立一個分類,用來記錄菜鳥揪心的安裝歷程。。。 1、首先去網易雲官網去下載網易雲音樂。下載連結 開啟連結,如下圖,點選Ubuntu16.04下載。 下載到Home下的下載資料夾。如下圖所示。 2、 安裝
採用Anaconda平臺呼叫pymc3時出現錯誤的解決方法
提示:(1)module 'theano' has no attribute 'gof',c++編輯出現錯誤 (2)stdio.h file not found 解決方法:(1)在終端中輸入 xcode-select --install,按提示安裝完成後,重啟終端即可
Composer instll 命令出現錯誤的解決方法
[Composer\Downloader\TransportException] Invalid credentials for 'https://packagist.phpcomposer.com/p/slimkit/plus%247bb5334d424a092dde686
關於Ubuntu下gcc編譯帶-lsqlite3出現錯誤的解決方法
如下錯誤: /usr/bin/ld: 找不到 -lsqlite3 collect2: error: ld returned 1 exit status Makefile:16: recipe for target 'FrontServer' failed make: ***
執行Double DQN程式出現錯誤及解決辦法
出現錯誤: ValueError: Variable Natural_DQN/eval_net/l1/w1 already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarSc
AspMVC -EF 使用過程中出現錯誤及解決
在.Net 使用EF如果不正確,可能會出現異常錯誤。一般而言,有可能以下錯誤場景1,在程式集“XXX”中未找到遷移配置型別“XXX.Migrations.Configuration”。這種錯誤出現在定義的DBContext 類與定義的web.config 資料連線串名稱不一致
myEclipse 專案有紅感嘆號問題出現原因及解決方法
【問題原因】:工程中classpath中指向的包路徑錯誤 【解決辦法】:右鍵專案名稱 BuildPath —> Configure Build Paht…中,然後上面有幾個選項卡找到 Libraries中出現紅色叉號的包為路徑錯誤的包。到classpath中修改相應包
maven managed dependencies找不到maven管理依賴的原因及解決方法
圖一 圖二 選擇圖二maven managed dependencies之後在圖一那裡沒顯示 原因:工程不是maven工程。 解決方法1:重新用ecplise建個maven工程,然後把你的程式碼匯入新工程,執行ok。 解決方法2:新增maven支援。如下圖:選擇”E