Java API
MyBatisを構成し、マッピングファイルを作成する方法がわかったので、スキルを向上させる準備ができました。 MyBatisのJava APIは、あなたが行った努力を享受する場所です。ご覧のとおり、JDBCと比較して、MyBatisはコードを大幅に簡素化し、シンプルで理解し、維持しやすくします。 MyBatis 3は、SQLマッピングを改善するために多くの重要な改善を導入しました。
MyBatis 3は、包括的で強力なJava構成APIに基づいて構築されています。この構成APIは、XMLベースのMyBatis構成の基礎であり、新しい注釈ベースの構成の基礎でもあります。
注釈は、多くのオーバーヘッドを導入することなく、簡単なマッピングステートメントを実装する簡単な方法を提供します。
MyBatisの一般的な注釈の対応するターゲットとラベルを表に示します。
| 注釈 | ターゲット | 対応するXMLタグ |
| @cachenamespace | 親切 | <キャッシュ> |
| @cachenamespaceref | 親切 | <cacheref> |
| @結果 | 方法 | <sultsMap> |
| @結果 | 方法 | <sults> <id> |
| @1つ | 方法 | <Association> |
| @多くの | 方法 | <コレクション> |
@入れる @アップデート @消去 | 方法 | <挿入> <update> <delete> |
@insertprovider @updateProvider @deleteprovider @SelectProvider | 方法 | <挿入> <update> <delete> <select> 動的SQLの作成を可能にします |
| @param | パラメーター | n/a |
| @options | 方法 | マッピングステートメントのプロパティ |
| @Select | 方法 | <select> |
Mybatisの一般的な注釈の意味:
@cachenamespace(size = 512):この名前空間内で組み込みのキャッシュの使用を定義します
@options(usecache = true、flushcache = false、timeout = 10000):一部のクエリのオプションスイッチ
@Param( "ID"):グローバルに資格のあるエイリアス、SQLステートメントのクエリパラメーターの位置は、0、1、2、3 ...、シーケンシャルサブスクリプトの形式ではなく、ここで定義されている対応する名前です。
@Resultsは、@Resultを要素として備えた配列です。 @Resultは、単一の属性フィールドのマッピング関係を表します。 ID = trueは、IDフィールドが主キーであることを意味します。 MyBatisは、クエリ中に必要な最適化を提供します。配列内のすべての@Resultsは、単一のレコードのマッピング関係を形成し、 @resultsは単一のレコードのコレクションです。さらに、@Resultsに似た非常に重要な注釈@ResultMapがあります
@Select( "Query Statement")、@Insert( "Statement")、@Update( "Update Statement")、@delete( "Delete Statement")は、データをクエリ、追加、更新、削除の操作を表します。
次に、注釈の使用を見てみましょう。
(1)通常の注釈の使用(カスタムマップ操作は不要):
例1
// author @insert( "Insertinto著者(ユーザー名、パスワード、電子メール、アドレス、電話)" +"values(#{username}、#{password}、#{email}、#{address}、#{phone})") @options(usegeneratedkeys = true、keyproperty = "flushcache = fals = chale = fals = fals = fals = fals、 著者); // delete Author @delete( "deletefrom where id =#{id {id}")@option(flushcache = false、false、timeout = 10000)public voideleteauthor(@param( "id")int id);ヒント:メソッドを呼び出す前に、マッパーを登録する必要があります。
sessionfactory.getConfiguration()。addmapper(testinteger.class);
または、mapper.xmlで<mapper> </mapper>を構成します
登録後、Mapperインターフェイスを取得して正常に呼び出します
(2)マップをカスタマイズする必要がある場合は、結果アノテーションを使用できます。
例2
//すべての著者情報@Select( "select * from Author") @options(flushcache = false、false、timeout = 10000、usecache = true)@results(value = { @result(id = column = "id"、property = "id") @result(property = "email"、column = "email")、 @result(property = "address"、column = "address")、 @result(property = "phone"、column = "phone")})public list <著者> findauthors; // = 10000、usecache = true)@results(value = {@result(id = true、column = "id"、property = "id")、 @result(property = "username"、column = "username")、 @result(property = "password"、column = "password")、 @result = "email"、column = "emault =" column = "columm @Result(Property = "Phone"、column = "Phone")})Public Author findauthorbyid(@param( "id")intid);複数のクエリによって返される結果セット構造が同じ場合、 @resultMapを使用して戻り構造を定義できます。このアノテーションを使用すると、マッピングファイルで結果マップを構成する必要があります。 @resultmap(value = "name")は、マッピングファイルの結果マップIDです。このようにして、構成ファイルを<mapper>に登録し、インターフェイスで@resultmapを使用して、次のように構成ファイルの結果マップIDを参照する必要があります。
例3
selfmapper.xml
//レコードの各行はhashmap <resultmaptype = "java.util.hashmap" id = "selfmap"> <resultproperty = "n" column = "city_name"/> ........> ....... </resultmap> ....
selfmapper.java:
@Select( "Select A.Id、B.Name、c.State from ............")@resultmap(value = "selfmap")public list <hashmap> sel(); //返されたリストコレクションに注意してください
完全なケース
インターフェイスコード
パッケージcom.obtk.dao; java.util.hashmapをインポートします。 java.util.listをインポートします。 org.apache.ibatis.annotations.insertをインポートします。 Import org.apache.ibatis.annotations.options; org.apache.ibatis.annotations.Resultsをインポートします。 org.apache.ibatis.annotations.Resultsをインポートします。 org.apache.ibatis.annotations.selectをインポートします。 com.obtk.entitys.studententityをインポートします。パブリックインターフェイスISTUDENTDAO {@INSERT( "inserting into student(stuname、gender、aght、desptidd)"+ "values(#{stuname}、#{gender}、#{age}、#{address}、#{deptid})")@options(savenatedkeys = int keneratedkeys = "true、keypropertyty stu); @Select( "Select * from Student Where Stuid =#{stuid}")@results(//列名と矛盾するプロパティ値が設定されている限り、value = {column = "gender"、 "sex")})desustentity queryid(integer stuid); @Select( "Select * from Student from Gender =#{qqq}およびaddress =#{area}")@results(// configurationプロパティvalue = { @result(column = "gender"、 "sex")})リスト// Universal Association Annotation Configuration @Select( "Select * from Student s Innine Join Department D" +"on S.Deptidd = d.deptid" +"where s.gender =#{sex}" +"およびd.departName =#{deptname}")list <hashmap> querybyqnn(hashmap); }ケース1オブジェクトをクエリします
パッケージcom.obtk.test; Import org.apache.ibatis.session.sqlsession; Import org.apache.ibatis.session.sqlsessionfactory; com.obtk.dao.istudentdaoをインポートします。 com.obtk.entitys.studententityをインポートします。 com.obtk.utils.mybatisutilをインポートします。 public class annoselectone {public static void main(string [] args){sqlsession session = null; sqlSessionFactory Factory = null; try {session = mybatisutil.getSession(); Factory = mybatisutil.getFactory(); //インターフェイス内のSQL構成をCore Configuration File Factory.getConfiguration()。AddMapper(ISTUDENTDAO.CLASS)に関連付けます。 ISTUDENTDAO STUDAO = SESSION.GETMAPPER(ISTUDENTDAO.CLASS); StudentEntity stu = studao.querybyid(129); system.out.println(stu.getStuname()+"、"+stu.getSex()+"、"+stu.getAddress()+"、"+stu.getSuid()); } catch(Exception e){e.printstacktrace(); }最後に{mybatisutil.closessess(); }}}ケース2は複数のパラメーターを渡し、複数のオブジェクトをクエリします
パッケージcom.obtk.test; java.util.hashmapをインポートします。 java.util.listをインポートします。 java.util.mapをインポートします。 Import org.apache.ibatis.session.sqlsession; Import org.apache.ibatis.session.sqlsessionfactory; com.obtk.dao.istudentdaoをインポートします。 com.obtk.entitys.studententityをインポートします。 com.obtk.utils.mybatisutilをインポートします。 public class annoselectmany {public static void main(string [] args){sqlsession session = null; sqlSessionFactory Factory = null; try {session = mybatisutil.getSession(); Factory = mybatisutil.getFactory(); //インターフェイス内のSQL構成をCore Configuration File Factory.getConfiguration()。AddMapper(ISTUDENTDAO.CLASS)に関連付けます。 ISTUDENTDAO STUDAO = SESSION.GETMAPPER(ISTUDENTDAO.CLASS); Hashmap parammap = new Hashmap(); parammap.put( "qqq"、 "male"); parammap.put( "Area"、 "学生寮"); List <StudentEntity> stulist = studao.querybymany(parammap); for(studentsity stu:stulist){system.out.println(stu.getStuname()+"+"+stu.getSex()+"、"+stu.getAddress()+"、"+stu.getSuid()); }} catch(例外e){e.printstacktrace(); }最後に{mybatisutil.closessess(); }}}ケース3オブジェクトを追加します
パッケージcom.obtk.test; Import org.apache.ibatis.session.sqlsession; Import org.apache.ibatis.session.sqlsessionfactory; com.obtk.dao.istudentdaoをインポートします。 com.obtk.entitys.studententityをインポートします。 com.obtk.utils.mybatisutilをインポートします。 public class annosavetest {public static void main(string [] args){sqlsession session = null; sqlSessionFactory Factory = null; try {session = mybatisutil.getSession(); Factory = mybatisutil.getFactory(); //コア構成ファイルFactory.getConfiguration()を使用してインターフェイス内のSQL構成を関連付けます。 ISTUDENTDAO STUDAO = SESSION.GETMAPPER(ISTUDENTDAO.CLASS); StudentEntity Stu = new StudentEntity( "testc#"、 "MALE"、21、 "pluto"); Stu.setDeptidd(10); int result = studao.saveone(stu); session.commit(); system.out.println( "susterfully:"+stu.getStuid()); } catch(Exception e){e.printstacktrace(); }最後に{mybatisutil.closessess(); }}}ケース4アソシエーションクエリにハッシュマップを使用します
パッケージcom.obtk.test; java.util.hashmapをインポートします。 java.util.listをインポートします。 java.util.mapをインポートします。 Import org.apache.ibatis.session.sqlsession; Import org.apache.ibatis.session.sqlsessionfactory; com.obtk.dao.istudentdaoをインポートします。 com.obtk.entitys.studententityをインポートします。 com.obtk.utils.mybatisutilをインポートします。 public class annojoinqnn {public static void main(string [] args){sqlsession session = null; sqlSessionFactory Factory = null; {// 4を試してください。セッションセッション= mybatisutil.getSession()を取得します。 Factory = mybatisutil.getFactory(); //インターフェイス内のSQL構成をCore Configuration File Factory.getConfiguration()。AddMapper(ISTUDENTDAO.CLASS)に関連付けます。 ISTUDENTDAO STUDAO = SESSION.GETMAPPER(ISTUDENTDAO.CLASS); Hashmap parammap = new Hashmap(); parammap.put( "sex"、 "male"); parammap.put( "deptname"、 "コンピューターシステム"); // 5。 executeステートメントリスト<hashmap> stulist = studao.querybyqnn(parammap); for(hashmap theobj:stulist){system.out.println(theobj.get( "stuid")+"、"+theobj.get( "gender")+")、"+theobj.get( "stuname")+"、"+theobj.get( "departname")); }} catch(例外e){e.printstacktrace(); }最後に{mybatisutil.closessess(); }}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。