以前のArticlemybatisはじめに学習チュートリアル(i) - MyBatisクイックスタートで、MyBatisを使用してユーザーテーブルのデータを照会する方法について説明しました。これはMyBatisの予備紹介です。今日は、MyBatisを使用してユーザーテーブルでCRUD操作を実行する方法を説明します。トピックに行く前に、MyBatisとCrudに関する基本的な知識を追加します。
MyBatisとは何ですか?
MyBatisは、プレーンSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた永続レイヤーフレームワークです。 MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定を排除し、結果セットを検索します。 MyBatisは、構成に単純なXMLまたはアノテーションを使用して、インターフェイスとJavaのPOJO(プレーン古いJavaオブジェクト)をデータベースのレコードにマッピングするためのオリジナルマッピングを使用できます。
mybatisダウンロード:https://github.com/mybatis/mybatis-3/releases
CRUDは意味があります
CRUDは、計算処理を実行するときにいくつかの単語の最初の文字の略語を指します。主に、ソフトウェアシステムのデータベースまたは永続性レイヤーの基本的な動作機能を説明するために使用されます。
この記事で使用されているテスト環境は、前の記事のテスト環境です。
1. MyBatisを使用して、テーブルでCRUD操作を実行する-XMLベースの実装
1。SQLマッピングXMLファイルを定義します
usermapper.xmlファイルの内容は次のとおりです。
<?xmlバージョン= "。" encoding = "utf-"?> <!doctype mapper public " - // mybatis.org//dtd mapper .//en" "http://mybatis.org/dtd/mybatis--mapper.dtd">< !--このマッパー用の一意の名前空間を指定します。名前空間の値は、従来、パッケージ名 + SQLマップファイル名に設定されているため、名前空間の値が一意であることが保証されます。たとえば、namespace = "me.gacl.mapping.usermapper"はme.gacl.mapping(パッケージ名) + usermapper(usermapper.xml removal suffix) - > <mapper namespace = "me.gacl.mapping.usermapper"> <!一意で、パラメータ型属性を再利用して、クエリで使用されるパラメータータイプを示すことはできません。 resultType属性は、query resulttype = "me.gacl.domain.user"によって返される結果セットタイプを示します。 resultType = "me.gacl.domain.user"> select * from user from user where id =#{id} </select> <! - create user(create) - > <insert id = "adduser" parametertype = "me.gacl.domain">ユーザー(名前、年齢)値への挿入id = "deleteuser" parametertype = "int">ユーザーからの削除id =#{id} </delete> <! - user(update) - > <update id = "updateuser" parametertype = "me.gacl.user"> update users set name =#{name}、age = {age nupte}ユーザー - > <id = "getallusers" resultType = "me.gacl.domain.user"> select * fromユーザー</select> </mapper>ユニットテストクラスコードは次のとおりです。
packed me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.util.mybatisutil; import org.apache.ibatis.session; import org.junit.test; public cr stestpudddd(@testpublmapper() sqlsession = mybatisutil.getsqlsession(false); sqlsession sqlsession = mybatisutil.getsqlsession(true);/***マップsql識別文字列、* me.gacl.mapping.usermapperは、user.xml aditer.xmlの属性属性の属性属性の属性属性の属性タグの名前空間属性タグの名前空間の属性タグのnamespaceの値です。挿入タグのID属性値を介して、実行するSQLを見つけることができます*/stringステートメント= "me.gacl.mapping.usermapper.adduser"; // map sql識別文字列ユーザーユーザー= new user(); user.setname( "user lonely and canglang"); user.stage( transactions // sqlsession.commit(); // sqlsessionでsqlを実行した後、sqlsessionsqlsession.close()を閉じる必要があります。 System.out.println(retresult);}@testpublic void testupdate(){sqlsession sqlsession = mybatisutil.getsqlsession(true);/*** map sql識別文字列、* me.gacl.mapping.usermapperは、マッパー属性の属性の属性の属性の属性属性の属性の属性属性の属性属性属性の属性の価値です更新タグの属性値。実行されるSQLは、更新タグのID属性値を介して見つけることができます。 */stringステートメント= "me.gacl.mapping.usermapper.updateUser"; //マッピングSQL ID文字列ユーザー= new user(); user.setId(); user.setName( "Lonely Canglang"); user.setage(); //修正int retresult = sqlsession.uts. sqlsessions.close(); system.out.println(retresult);}@testpublic void testdelete(){sqlsession sqlsession = mybatisutil.getsqlsession(true);/***マップマップsql識別文字usermapper.xmlファイル * deleteuserは、deleteタグのID属性値です。実行されるSQLは、deleteタグのid属性値を介して見つけることができます*/stringステートメント= "me.gacl.mapping.usermapper.deleteuser"; //マップSQL識別文字sqlsessionsqlsessions.close(); system.out.println(retresult);}@testpublic void testgetall(){sqlsession sqlsession = mybatisutil.getsqlsession();/***マップマップsql識別文字usermapper.xmlファイル、 * getallusersは、selectタグのID属性値です。 SelectタグのID属性値を介して、実行するSQLを見つけることができます*/stringステートメントは実行されます= "me.gacl.mapping.usermapper.getallusers"; // sql識別文字列//クエリ操作をマッピングし、クエリ結果を自動的に実行します。 sqlsession execute sql、sqlsessionsqlsession.close()を閉じる必要があります。 System.out.println(lstusers);}} 2。MyBatisを使用して、テーブルでCRUD操作を実行します - 注釈ベースの実装
1。SQLマッピングのインターフェイスを定義します
usermapperiインターフェイスのコードは次のとおりです。
packy me.gacl.mapping; import java.util.list; import me.gacl.domain.user; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.select; inmorg.apach.ibatis.update. GACL* SQLマッピングのインターフェイスを定義し、アノテーションを使用して実行するSQLを指定します*/パブリックインターフェイスUserMapperi {// @insertアノテーションを使用して、sqlを使用してadd method @insert @insert( "inserting into user(name、age)values(#name})、{age} aint add add(aint add(name})") ")") ")") deletebyid method@delete( "delete from users where id =#{id}")public deletebyid(int id); // @updateアノテーションを使用して@update annotationを使用して、@update annotationを使用して、@update annotation@update@update( "update users set name =#{name}、{age = {age id} {age neput} {age neput> {age nept)によって実行されるsqlを指定します。ユーザー); // @Select Annotationを使用して、getByIDメソッドで実行されるSQLを指定します @select * from where id =#{id} ")public user getbyid(int id); Usermapperiインターフェイスに特定の実装クラスコードを記述する必要はないことに注意してください。この特定の実装クラスは、MyBatisによって動的に構築されており、直接使用する必要があります。
2。conf.xmlファイルにこのマッピングインターフェイスを登録します
<?xmlバージョン= "。" encoding = "utf - "?> <!doctype configuration public " - // mybatis.org//dtd config.//en" "http://mybatis.org/dtd/mybatis-config.dtd"> <configuration> /> <! - データベース接続情報の構成/> </dataSource> </環境> </環境> <mappers> <! - usermapper.xmlファイルを登録します。 usermapper.xmlはパッケージMe.gacl.mappingにあるため、リソースはme/gacl/mapping/usermapper.xmlとして記述されます。
ユニットテストクラスのコードは次のとおりです。
packed me.gacl.test; import java.util.list; import me.gacl.domain.user; import me.gacl.mapping.usermapperi; import me.gacl.util.mybatisutil; import org.apache.ibatis.session.ssions.sqlsession; Import crass.test; public crids.testiontimentaintions void testadd(){sqlsession sqlsession = mybatisutil.getSqlSession(true); // usermapperiインターフェイスの実装クラスオブジェクトを取得します。 Usermapperiインターフェイスの実装クラスオブジェクトは、sqlsession.getMapper(usermapperi.class)によって動的に構築されます。 usermapperi mapper = sqlsession.getMapper(usermapperi.class); user user = new user(); user.setname( "userxdp"); user.setage(); int add = mapper.add(user); // sqlsessionを使用してsqlを実行した後、SQLSESSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONSIONS.QLSESSIONS.CLSESSIONS.CLOSE( system.out.println(add);}@testpublic void testupdate(){sqlsession sqlsession = mybatisutil.getsqlsession(true); // usermapperiインターフェイスの実装クラスオブジェクトを取得します。 usermapperiインターフェイスの実装クラスオブジェクトは、sqlsession.getMapper(usermapperi.class)usermapperi mapper = sqlsession.getMapper(usermapperi.class)によって動的に構築されます。 user user = new user(); user.setid(); user.setname( "long lang_xdp"); user.setage(); //変更操作int retresult = mapper.update(user); // sqlsessionを使用した後、sqlsessionsqlsession.close( testdelete(){sqlsession sqlsession = mybatisutil.getsqlsession(true); // usermapperiインターフェイスの実装クラスオブジェクトを取得します。 Usermapperiインターフェイスの実装クラスオブジェクトは、sqlsession.getMapper(usermapperi.class)usermapperi mapper = sqlsession.getMapper(usermapperi.class); sqlsessionsqlsession.close(); System.out.println(retresult);}@testpublic void testgetuser(){sqlsession sqlsession = mybatisutil.getsqlsession(); // usermapperiインターフェイスの実装クラスオブジェクトを取得します。 usermapperiインターフェイスの実装クラスオブジェクトは、sqlsession.getMapper(usermapperi.class)usermapperi mapper = sqlsession.getMapper(usermapperi.class); //クエリ操作を実行し、ユーザーを返してユーザーを返しているユーザー= mapper.getid(); sqlsessionsqlsession.close()を閉じる必要があります。 system.out.println(user);}@testpublic void testgetall(){sqlsession sqlsession = mybatisutil.getsqlsession(); // usermapperiインターフェイスの実装クラスオブジェクトを取得します。 usermapperiインターフェイスの実装クラスオブジェクトは、sqlsession.getMapper(usermapperi.class)usermapperi mapper = sqlsession.getMapper(usermapperi.class)によって動的に構築されます。 sqlsessionを使用して、sqlsessionsqlsession.close()を閉じる必要があります。 System.out.println(lstusers);}}使用されるmybatisutilツールクラスコードは次のとおりです。
ge.gacl.util; import java.io.inputStream; Import org.apache.ibatis.session.sqlsession; Import org.apache.ibatis.session.session.session.apache.ibatis.session.ssessionFactory; import org.apach.ibatis.ssession.squbuild mybatisutil {/*** get sqlsessionfactory*@return sqlsessionfactory*/public static sqlsessionfactory getsqlsessionfactory(){string resource = "conf.xml"; inputstream is = mybatisutil.class.getclassolder()。 sqlSessionFactoryBuilder()。build(is); return factory;}/*** get sqlsession* @return sqlsession*/public static sqlsession getsqlsession(){return getsqlsession()。 SQLが実行された後のトランザクション* falseは、作成されたSQLSessionオブジェクトがSQLが実行された後にトランザクションを自動的にコミットしないことを示します。この時点で、sqlsession.commit()を手動で呼び出してトランザクション* @return sqlsession*/public static sqlsession getsqlsession(boolean isautocommit){return getsqlsession().opensession(isautocommit);}}}}上記の関連コードはすべてテストされており、誰もが自信を持って使用できます!
上記は、編集者(II)によって紹介されたMyBatis Learningチュートリアルです - MyBatisを使用してユーザーテーブルでCRUD操作を実行する方法です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!