MyBatisは、プレーンSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた永続レイヤーフレームワークです。 MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定と、結果セットの検索カプセル化を排除します。 MyBatisは、構成とオリジナルマッピング、マッピングインターフェイス、JavaのPOJO(プレーンオールドJavaオブジェクト)に、データベース内のレコードに簡単なXMLまたはアノテーションを使用できます。
前の記事では、MyBatisの1対1マッピングに関するチュートリアルを紹介します。
Mybatisの多くのマッピング知識についてお話ししましょう。具体的な詳細は次のとおりです。
コースと学生の関係など、多くの多くの例があります。コースには複数の選択的学生がいることがあり、学生は複数の被験者を服用することもできます。教師と生徒の関係:教師には複数の生徒がおり、生徒には複数の教師がいます。
例として、学生とコースの関係を考えてみましょう。
データテーブルを作成するとき、2つのソリューションがあります。
最初のタイプ:
学生のデータテーブルを作成するときは、コース用の外部キーフィールドを保存します。
コースデータテーブルを作成するときは、学生の外部キーフィールドを保存します。
しかし、これには大きな不利な点があります。つまり、学生テーブルを削除したい場合、コーステーブルの外部キーフィールドがあります。
同様に、コーステーブルを削除したい場合、学生テーブルの外部キーフィールドがあります。ああ、対処するのは簡単ではありません。
2番目のタイプ:
学生とコースのテーブルを作成し、それぞれのフィールドとレコードを2つのテーブルに保存します。
別の一般的な学生_Courseテーブルは、学生とコースの外部キーを保存するための中間テーブルとして使用されます。
これは、単語テーブルを削除するのに非常に便利なので、このソリューションを採用します。
データベーススクリプト
-Many-to-Manyマッピング - 削除データベースドロップデータベースMyBatisが存在する場合; - データベースの作成MyBatisデフォルトの文字セットUTF8を作成するデータベースの作成UTF8を選択します。 Varchar(32)、制約PK_SIDプライマリキー(SID));テーブルコースを作成(CID INT(255)、CNAME VARCHAR(32)、Constraint PK_CIDプライマリキー(CID));テーブル学生_Course(SID INT(255)、CID INT(255)、制約PK_SID_CIDプライマリキー(SID、CID)、制約FK_SID外部キー(SID)参照学生(SID)、制約FK_CID外部キー(CID)リファレンスコース(CID)); (sid、sname)values(2、 'ha'); inserting intoinging course(cid、cname)values(1、 'java'); course(cid、cname)values(2、 '。net'); insert intouting_course(sid、cid)values(1,1)(1,1)(1,1); inserting intering(sid、cid); (2,1); Student_Course(SID、CID)値に挿入(2,2);
新しいmany2many.course.javaクラスを作成します
Package Many2many; import java.io.serializable; Import java.util.arraylist; import java.util.list;/*** course*@author Administrator **/ @suppresswarnings( "serial")Public Class Course emplence Serializable {private cname; private cname; private cname getCid(){return cid;} public void setCid(integer cid){this.cid = cid;} public string getcname(){return cname;} public void setcname(string cname){this.cname = cname;} public list <sustent> getsstud(} public vioid;} public void;} {this.students = desustor;}}新しいmany2many.student.javaクラスを作成します
Package Many2many; import java.io.serializable; import java.util.arraylist; import java.util.list;/*** sudine class*@author Administrator **/ @suppresswarnings( "serial")Public Class Student Student Serializable {private String; private String getsid(){return sid;} public void setsid(integer sid){this.sid = sid;} public string getsname(){return sname;} public void setsname(string sname){this.sname;} {this.courses = courses;}}新しいStudentMapper.xmlファイルとcoursemapper.xmlファイルを作成します
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapper public " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" type = "many2many.student" id = "sudentmap"> <id property = "sid" column = "sid"/> <respurent property = "sname" column = "sname"/> <resputプロパティ= "sname"/> <? 3.0 // en "" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace =" coursenamespace "> <resultmap type =" muly2many.course "id =" coursemap "> <id property" column = "cname"/> <resultmap> <! - "haha" - > <select id = "findallbyname" parametertype = "string" resultmap = "coursemap"> select c.cname、c.cid、c.cid、c.cid、cose c、course _course sc sc.sid = sc.sid = c.cid = sc.c.cid and s.c.c.c.c.c.c.c.c.c.c.c.c.c. #{sname}; </select> </mapper>新しいPersistence Layer Class StudentCoursedao.javaクラスを作成します
Package Many2many; Import Java.util.iterator; Import Java.util.list; Import One2many.Student; import org.apache.ibatis.session.squlsession; import org.junit.test; import util.mybatisutil; public cluse susteent futdscoursedao {/*** execive* @coursedsedaoを取得します。 @return* @ROROWS例外*/public List <Course> findAllByName(String name)THROWS {sqlSession sqlsession = null; try {sqlsession = mybatisutil.getSqlsession(); return sqlsession.selectlist( "coursenamespace.findallbyname"、ectrint "、e.} cutch() e;}最後に{mybatisutil.closesqlsession();}}@testpublic void testfindallbyname()throws excepution {sudentcoursedao dao = new sustent> courses = dao.findallbyname( "haha"); {system.out.println(course.getCid()+":"+course.getcname();}}}}}}}}mybatis.cfg.xmlファイルに構成ファイルをロードします
<! - マッピングファイルをロードします - > <マッパーリソース= "one2one/cardmapper.xml"/> <mapper resource = "one2one/sustentmapper.xml"/> <mapper resource = "one2many/grademapper.xml"/> <mapper resource = "one2many/sudentmapper.xml"/> <mapper Resource = "Many2many/sustentmapper.xml"/> <mapper resource = "many2many/coursemapper.xml"/> <mapper resource = "many2many/coursemapper.xml"/> <mapper resource = "many2many/coursemapper.xml"/> <mappany/> <mappsemapper.xml
上記は、編集者が紹介したMyBatisの多くのマッピングに関する最初のチュートリアルです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!