1。GetMapper()インターフェイス
分析:getMapper()インターフェイスIDEPT.CLASSはインターフェイスを定義します。
実装されていないメソッドの取り付け。特別な用語では、建物を借用する方法は、小さな構成のID属性と一致する必要があります。
プロキシを介して:インターフェイスの実装クラス名を生成し、$$ dept_abc、selectdeptbyno()を維持します。
それは強いタイプに相当します
例えば
ステップ1:Cn.happy.daoのインターフェイスを定義します
パッケージcn.happy.dao; Import java.util.list; import cn.happy.entity.dept; public interface ideptdao {//すべてを表示----------- GetAllDeptは小さな構成のパブリックリスト<Dept> getAlldept();}のIDと同じである必要がありますステップ2:idept.xml構成小さな構成
分析:SelectのID属性は、インターフェイスのインターフェイスメソッド名と同じでなければなりません。 Mapperの名前空間属性パッケージ名はcn.happy.dao.ideptdaoインターフェイスです
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapperpublic " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.happy.dao.dao.ideptdao"> <select id = "getalldept" resultType = "cn.happy.dect.dept"> select * from dept </select> </mapper>
ステップ3:クラスをテストします
分析:すべての情報を表示するには2つの方法があります
1)session.selectlist( "cn.happy.dao.ideptdao.getalldept")
2)ideptdao mapper = session.getMapper(ideptdao.class);実装クラスに相当します、GetMapperは強力なタイプです
// 01Viewすべての情報getMapper()インターフェイスクラスのメソッド名は、小動物のID @testpublic void testSelectall(){sqlsession session = factory.opensession(); //小さな構成のID名========================リスト<Dept> list = session.selectlist( "cn.happy.dao.ideptdao.getalldept");メモリのインターフェイス実装クラス=========================== [強いタイプに相当//マッパーは実装クラスオブジェクトIDEPTDAOマッパー= session.getMapper(ideptdao.class); list <dept> list = mapper.getalldept(); for(dept dept:list){system.out.println(dept.getDeptname());}ステップ4:テキスト全体で大規模な構成を使用する
<?xml version = "1.0" encoding = "UTF-8"?> <エイリアス - > <TypeAliase> <TypeAlias Type = "cn.ResultMap.Enetity.Emp" Alias = "emp"/> </typealiase> <環境デフォルト= "開発"> <環境ID = "開発"> <TransactionManager Type = "JDBC"/>> <DataSource Type = "POORLED" />> <プロパティname = "url" value = "jdbc:oracle:shin:@localhost:1521:orcl" /> <プロパティ名= "username" value = "sa" /> <プロパティ名= "value =" 1 " /> < /datasource> < /環境> < /環境> <! resource = "cn/resultmap/enetity/emp.xml"/> </mappers> </configuration>
2。結果マップタグ
分析:使用されるシナリオは、エンティティクラスのプロパティがデータベースと一致しない場合、エンティティクラスのプロパティとデータベースが一貫している必要があるということです。 (以前にエンティティクラスを使用しました)
たとえば、すべての従業員および関連部門を検索します
ステップ1:インターフェイスを作成します
パッケージcn.resultmap.dao; Import java.util.list; import cn.resultmap.enetity.emp; public interface iempdao {//すべての従業員と関連部門のパブリックリストを取得しますpublic list <emgalemps();}ステップ2:小さな構成でプロパティを構成します
分析:大規模な従業員の視点を持つ一方の当事者については、Associationを使用して、1つの当事者の各属性を埋め込んでください。 (協会が削除された場合、それは基本的な結果マップです)
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapperpublic " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.resultmap.dao.iempdao"> <resultmap type = "cn.resultmap.enetity.emp" "id =" empmap "> <id property =" empid "column =" empid "/> <resultプロパティ=" empname "column =" empname "/>パースペクティブ、協会を使用してください - > <Associationプロパティ= "dept" javatype = "cn.resultmap.enetity.dept"> <result property = "deptname" column = "deptname"/> <resultプロパティ= "deptno" column = "deptno"/>> </association> </resultmap> <select id " emp e、dept d where e.deptno = d.deptno </select> </mapper>
ステップ3:クラスをテストします
// resultmap:エンティティの属性名とテーブルのフィールド名は、resultmapと一致することが保証されています// nullexceptionを報告する場合は、小さな構成のマッピング関連が構成されているかどうかを確認します。 resultmapは@testpublic void testallemp(){sqlsession session = factory.opensession(); iempdao mapper = session.getMapper(iempdao.class); list <emp> allemps = mappper.getallemps(); for(emp:allemps){system.out.println(emp.getempname()+"/tアフィリエイト部門"+emp.getDept()。getDeptname());} session.close();}ステップ4:大規模な構成で小さな構成を導入します
3。SQL列を抽出します
分析:SQLタグは小さな構成でコードボリュームを簡素化します
<! - sqlタグの使用 - > <sql id = "columns"> d.deptno、d.deptname </sql> <! - sqlタグの使用 - > <id = "getAllemps" resultmap = "empmap"> select e。*、<
4。エイリアスエイリアス
分析:エイリアスを小さな構成で参照できるように、大規模な構成に書き込みます
<! - エイリアスエイリアス構成のタイプの属性値をエイリアスに変更 - > <typealiase> <typealias type = "cn.resultmap.enetity.emp" airas = "emp"/> </typealiase>
5。動的操作
分析:動的SQLを実装するために使用される主な要素は次のとおりです。
[設定されている場合)を選択した場合
たとえば、北京市の人々を見る
ステップ1:インターフェイス
パッケージcn.resultmap.dao; Import java.util.list; import cn.resultmap.enetity.emp; public interface iempdao {//すべての従業員と関連部門のパブリックリストを取得しますpublic list <emgalemps();}ステップ2:smallバージョン= "1.0"エンコード= "utf-8"?>
<!doctype mapperpublic " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.resultmap.dao.iempdao"> <resultmap type = "cn.resultmap.enetity.emp" id = "empmap"> <id property = "empid" column = "empid"/> <result property = "empname" column = "empname"/> <resultプロパティ= "empcity" column = "empcity"/>> <! javatype = "cn.resultmap.enetity.dept"> <result property = "deptname" column = "deptname"/> <result property = "deptno" column = "deptno"/> </resultmap> <select id = "getAllemps" resultmap = "empmap" e.deptno = d.deptno </select> <! - query dynamic query-> <select id = "testallempbuselect" parametertype = "cn.resultmap.enetity.emp" resulttype = "cn.resultmap.enetity.emp" resulttype = " test = "empid!= null">およびempid =#{empid} </if> <if> "empname!= null">およびempname =#{empname} </if> <if> <"empcity!= null"> and empcity =#{empcity} </> <ステップ3:テスト
// dynamic query @testpublic void testselect(){sqlsession session = factory.opensession(); emp = new emp(); // emp.setempname( "331"); emp.setempcity( "sh"); list <emp> list = session.selectlist( "cn.resultmap.dao.iempdao.testallempbuselect"、emp); for(emp emps:list){system.out.println(emps.getempname());} session.close();}ステップ4:大規模な構成で小さな構成を導入します
たとえば、部門情報を変更します
ステップ1:インターフェイス
ステップ2:小さな構成
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapperpublic " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "cn.resultmap.dao.ideptdao"> <resultmap type = "cn.happy.entity.dept" id = "deptresultmap"> <id property = "deptno" column = "deptno"/> <resultプロパティ= "deptname" column " resultmap = "deptresultmap"> select d。*、e。* from dept d、emp ewhere emp ewhere d.deptno = e.deptno =#{deptno} </select> <! - 動的クエリの変更dept <set> <if test = "deptno!= null"> deptno =#{deptno}、</if> <if test = "deptname!= null"> deptname =#{deptname}、</if> </set> where deptno =#{deptno} </select> </mapper>ステップ3:テスト
/*** Dynamic Modification**/@testpublic void testupdate(){sqlsession session = factory.opensession(); dept dept = new dept(); dept.setdeptname( "Financial Department"); dept.setdeptno(1); int count = = count = session.update( "cn.resultmap.dao.ideptdao.testupdate"、dept); session.commit(); system.out.println(count); session.close();}上記は、MyBatisのGetMapper()インターフェイス、ResultMapタグ、エイリアスエイリアス、SQL列を抽出して動的操作の詳細な説明です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!