今天晚上在學習mybatis注解的時候,總是遇到錯誤type interface com.souvi.ibatis.xxxmapper is not known to the mapperregistry,在網上搜尋相關的解決方案時,得到的答案都不怎麼詳細,但知道了mybatis注解一定要注冊自己寫的接口類,不然就會老報開頭提到的這個錯誤。
下面舉個例子:先看看項目的簡單部署吧,如圖:
先看核心檔案,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><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code> <code>?> </code>
<code><!doctype configuration public </code>
<code> </code><code>"-//mybatis.org//dtd config 3.0//en"</code>
<code><configuration></code>
<code> </code><code><typealiases></code>
<code> </code><code><typealias alias=</code><code>"user"</code> <code>type=</code><code>"com.rollen.user"</code> <code>/></code>
<code> </code><code></typealiases></code>
<code> </code><code><environments </code><code>default</code><code>=</code><code>"development"</code><code>></code>
<code> </code><code><environment id=</code><code>"development"</code><code>></code>
<code> </code><code><transactionmanager type=</code><code>"jdbc"</code> <code>/></code>
<code> </code><code><datasource type=</code><code>"pooled"</code><code>></code>
<code> </code><code><property name=</code><code>"driver"</code> <code>value=</code><code>"com.mysql.jdbc.driver"</code> <code>/></code>
<code> </code><code><property name=</code><code>"username"</code> <code>value=</code><code>"root"</code> <code>/></code>
<code> </code><code><property name=</code><code>"password"</code> <code>value=</code><code>"root"</code> <code>/></code>
<code> </code><code></datasource></code>
<code> </code><code></environment></code>
<code> </code><code></environments></code>
<code></configuration> </code>
參考文章:http://www.laokboke.net/2012/09/25/mybatis-annotation/