天天看點

Mybatis注解學習--xxxMapper is not known to the MapperRegistry

今天晚上在學習mybatis注解的時候,總是遇到錯誤type interface com.souvi.ibatis.xxxmapper is  not known to the mapperregistry,在網上搜尋相關的解決方案時,得到的答案都不怎麼詳細,但知道了mybatis注解一定要注冊自己寫的接口類,不然就會老報開頭提到的這個錯誤。

下面舉個例子:先看看項目的簡單部署吧,如圖:

Mybatis注解學習--xxxMapper is not known to the MapperRegistry

先看核心檔案,usertest.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<code>package</code> <code>com.rollen;</code>

<code>import</code> <code>java.io.*;</code>

<code>import</code> <code>org.apache.ibatis.io.resources;</code>

<code>import</code> <code>org.apache.ibatis.session.sqlsession;</code>

<code>import</code> <code>org.apache.ibatis.session.sqlsessionfactory;</code>

<code>import</code> <code>org.apache.ibatis.session.sqlsessionfactorybuilder;</code>

<code>public</code> <code>class</code> <code>usertest {</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(string[] args) {</code>

<code>        </code><code>string resource = </code><code>"com/rollen/configure.xml"</code><code>;</code>

<code>        </code><code>reader reader = </code><code>null</code><code>;</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>reader = resources.getresourceasreader(resource);</code>

<code>        </code><code>} </code><code>catch</code> <code>(ioexception e) {</code>

<code>            </code><code>e.printstacktrace();</code>

<code>        </code><code>}</code>

<code>        </code><code>sqlsessionfactory factory = </code><code>new</code> <code>sqlsessionfactorybuilder()</code>

<code>                </code><code>.build(reader);</code>

<code>        </code><code>factory.getconfiguration().addmapper(userinfomapper.</code><code>class</code><code>);</code>

<code>        </code><code>sqlsession sqlsession = factory.opensession();</code>

<code>            </code><code>userinfomapper userinfomapper = sqlsession</code>

<code>                    </code><code>.getmapper(userinfomapper.</code><code>class</code><code>);</code>

<code>            </code><code>user user = userinfomapper.getuser(</code><code>10</code><code>);</code>

<code>            </code><code>system.out.println(user);</code>

<code>        </code><code>} </code><code>finally</code> <code>{</code>

<code>            </code><code>sqlsession.close();</code>

<code>    </code><code>}</code>

<code>}</code>

  主要要注意的是比如要注冊,也就是這行代碼:

<code>factory.getconfiguration().addmapper(userinfomapper.</code><code>class</code><code>);</code>

  userinfomapper.java代碼如下:

<code>import</code> <code>org.apache.ibatis.annotations.select;</code>

<code>public</code> <code>interface</code> <code>userinfomapper {</code>

<code>    </code><code>@select</code><code>(</code><code>"select * from user_tb where age= #{age}"</code><code>)</code>

<code>    </code><code>public</code> <code>user getuser(</code><code>int</code> <code>age);</code>

  user.java 代碼如下:

36

37

38

39

40

<code>public</code> <code>class</code> <code>user {</code>

<code>    </code><code>private</code> <code>string name;</code>

<code>    </code><code>private</code> <code>int</code> <code>age;</code>

<code>    </code><code>/**</code>

<code>     </code><code>* @return the name</code>

<code>     </code><code>*/</code>

<code>    </code><code>public</code> <code>string getname() {</code>

<code>        </code><code>return</code> <code>name;</code>

<code>     </code><code>* @param name the name to set</code>

<code>    </code><code>public</code> <code>void</code> <code>setname(string name) {</code>

<code>        </code><code>this</code><code>.name = name;</code>

<code>     </code><code>* @return the age</code>

<code>    </code><code>public</code> <code>int</code> <code>getage() {</code>

<code>        </code><code>return</code> <code>age;</code>

<code>     </code><code>* @param age the age to set</code>

<code>    </code><code>public</code> <code>void</code> <code>setage(</code><code>int</code> <code>age) {</code>

<code>        </code><code>this</code><code>.age = age;</code>

<code>    </code><code>/* (non-javadoc)</code>

<code>     </code><code>* @see java.lang.object#tostring()</code>

<code>    </code><code>@override</code>

<code>    </code><code>public</code> <code>string tostring() {</code>

<code>        </code><code>// todo auto-generated method stub</code>

<code>        </code><code>return</code> <code>"name: "</code><code>+name+</code><code>"age: "</code><code>+age;</code>

<code>    </code> 

  最後的configure.xml檔案代碼為:

<code>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code> <code>?&gt; </code>

<code>&lt;!doctype configuration public  </code>

<code>    </code><code>"-//mybatis.org//dtd config 3.0//en"</code> 

<code>&lt;configuration&gt;</code>

<code>    </code><code>&lt;typealiases&gt;</code>

<code>        </code><code>&lt;typealias alias=</code><code>"user"</code> <code>type=</code><code>"com.rollen.user"</code> <code>/&gt;</code>

<code>    </code><code>&lt;/typealiases&gt;</code>

<code>    </code><code>&lt;environments </code><code>default</code><code>=</code><code>"development"</code><code>&gt;</code>

<code>        </code><code>&lt;environment id=</code><code>"development"</code><code>&gt;</code>

<code>            </code><code>&lt;transactionmanager type=</code><code>"jdbc"</code> <code>/&gt;</code>

<code>            </code><code>&lt;datasource type=</code><code>"pooled"</code><code>&gt;</code>

<code>                </code><code>&lt;property name=</code><code>"driver"</code> <code>value=</code><code>"com.mysql.jdbc.driver"</code> <code>/&gt;</code>

<code>                </code><code>&lt;property name=</code><code>"username"</code> <code>value=</code><code>"root"</code> <code>/&gt;</code>

<code>                </code><code>&lt;property name=</code><code>"password"</code> <code>value=</code><code>"root"</code> <code>/&gt;</code>

<code>            </code><code>&lt;/datasource&gt;</code>

<code>        </code><code>&lt;/environment&gt;</code>

<code>    </code><code>&lt;/environments&gt;</code>

<code>&lt;/configuration&gt; </code>

  參考文章:http://www.laokboke.net/2012/09/25/mybatis-annotation/