1。クエリ
単一のレコードのクエリに加えて、ここではレコードのセットを照会しようとします。
次のメソッドをiusermapperインターフェイスに追加します。
リスト<ユーザー> getusers(string name);
user.xmlを追加:
<resultmap type = "user" id = "userlist"> <! - タイプは、リスト要素を返すクラスのフルネームまたはエイリアスです - > <id column = "id" property = "id" /> <result column = "name" name = "name" /> <result column = "age" property = "age" /> <result colummen = "dostress" parametertype = "string" resultmap = "userlist"> <! - resultmapは上記のユーザーリストです - > select * from `users {name} </select>テスト方法:
@test public void querylisttest(){sqlsession session = sqlsessionfactory.opensession(); try {iusermapper mapper = session.getMapper(iusermapper.class);リスト<ユーザー>ユーザー= mapper.getusers( "%a%"); //%はSQLの任意の文字を表します。 for(user user:user){log.info( "{}:{}"、user.getName()、user.getAddress()); }}最後に{session.close(); }}接続詞テーブルクエリが返される場合、化合物オブジェクトはAssociationキーワードで処理する必要があります。
ユーザーが記事を公開する場合、各ユーザーは複数の記事を公開でき、1対多数の関係があります。
(1)記事テーブルを作成し、テストデータを挿入します。
- 存在する場合はテーブルをドロップします。「記事」が存在する場合。 - 「記事」という名前のテーブルを作成するテーブルを作成します `article`(` dot not not null auto_increment、 `user_id` int not null、` title` varchar(100)not null、 `content` not null、primary key(` did`))エンジン= innodb auto_increment = 1 default = utf8; - `1 '、' 1 '、' title1 '、' content1 ')、(' 2 '、' 1 '、' tittle2 '、' content2 ')、(' 3 '、' 1 '、' tittle3 '、' content3 ')、(' 2 '、' 1 '、' title2 '、' content3 ')、' 1 '、' 1 '、' title1 '、' content1 ')にいくつかのテストレコードを追加します。
(2)com.john.hbatis.model.articleクラス:
パブリッククラス記事{private int id;プライベートユーザーユーザー;プライベートストリングタイトル。プライベート文字列コンテンツ。 //ゲッターとセッターは省略されています}(3)iusermapperを追加します:
リスト<ports> getArticlesbyUserid(int id);
(4)user.xmlを追加:
<resultmap type = "com.john.hbatis.model.article" id = "articlelist"> <id column = "a_id" property = "id" /> <result column = "title" property = "title" /> <result colummenプロパティ= "id" /> <result column = "name" property = "name" /> <result column = "address" property " /> < /associatemap> < /resultmap> <select id =" getarticlesbyuserid "parametertype =" int "resultmap =" articlelist "> a.user_id = u.idおよびu.id =#{id} </select>(5)テスト方法:
@test public void getArticlesbyUserIdtest(){sqlsession session = sqlsessionfactory.opensession(); try {iusermapper mapper = session.getMapper(iusermapper.class);リスト<portion> article = mapper.getarticlesbyuserid(1); for(記事記事:記事){log.info( "{} - {}、著者:{}"、article.getTitle()、article.getContent()、article.getUser()。getName()); }}最後に{session.close(); }}添付:
Associationタグ内のフィールドと属性のマッピングを定義することに加えて、ユーザーの結果マップを再利用することもできます。
<Association Property = "user" javatype = "user" resultmap = "userlist" />
2。追加
次のメソッドをiusermapperインターフェイスに追加します。
int adduser(ユーザーユーザー);
user.xml追加:
<ID = "adduser" parametertype = "user" usegeneratedkeys = "true" keyproperty = "id"> <! - usegeneratedKeysは、MyBatisがデータベースを使用してKeyPropertyによって指定されたプロパティで自動的に生成および移動する主要なキーを指定します。指定されていない場合、returnオブジェクトは生成された値を取得できません - >ユーザー(名前、年齢、アドレス)値(#{name}、#{age}、#{address})</insert>テスト方法:
@test public void addusertest(){user user = new user( "Lucy"、102、 "Happy District"); sqlsession session = sqlsessionfactory.opensession(); try {iusermapper mapper = session.getMapper(iusermapper.class); int rifectedCount = mapper.adduser(user); session.commit(); //デフォルトは自動的に送信されません。 session.getConnection()。getAutocommit()を呼び出してlog.info( "{}新しいレコードが正常に挿入されました。 }最後に{session.close(); }}3。更新
インターフェイスの追加方法:
int updateUser(ユーザーユーザー);
user.xml追加:
<update id = "updateUser" parametertype = "user"> update `user` set name =#{name}、age =#{age}、address =#{address}ここでid =#{id} </update>テスト方法:
@test public void updutsusertest(){sqlsession session = sqlsessionfactory.opensession(); try {iusermapper mapper = session.getMapper(iusermapper.class);ユーザーユーザー= mapper.getuserbyid(8); user.setAddress( "満足地区"); int riffectedcount = mapper.updateuser(user); //変更する属性に加えて、ユーザーの他の属性も割り当てる必要があります。そうしないと、これらの属性はデータベースによって初期値(nullまたは0など)に更新されます。最初にクエリすることはできますが、これによりデータベースとの不必要な相互作用が増加します。次の条件はこの問題を回避できます。 log.info( "fiftected count:{}"、rifectedcount); session.commit(); }最後に{session.close(); }}4.削除
インターフェイスの追加方法:
int deleteuser(int id);
user.xml追加:
<delete id = "deleteuser" parametertype = "int"> delete `user` where id =#{id} </delete>テスト方法:
@test public void deleteusertest(){sqlsession session = sqlsessionfactory.opensession(); try {iusermapper mapper = session.getMapper(iusermapper.class); int riffectedCount = mapper.deleteuser(8); log.info( "fiftected count:{}"、rifectedcount); session.commit(); }最後に{session.close(); }}