MyBatisを使用するほとんどの開発者は、XMLファイルに大量のSQLを記述するという問題に遭遇します。特別なビジネスロジックSQLに加えて、同様の構造を持つ多数のSQLもあります。さらに、データベーステーブル構造が変更されると、対応するすべてのSQLおよびエンティティクラスを変更する必要があります。このワークロードと効率の影響は、プログラマーと実際のプログラマーの追加、削除、変更、チェックの際の障壁となる可能性があります。この時点で、一般的なマッパーは...
ユニバーサルマッパーとは何ですか
General Mapperは、MyBatisに基づいたプラグインであり、単一のテーブルの追加、削除、変更、および検索の問題を解決します。開発者は、SQLを作成したり、DAOにメソッドを追加する必要はありません。エンティティクラスをよく書いている限り、対応する方法をサポートすることができます。
使い方
MySQLを例にとると、そのようなテーブルがあるとします。
テーブルの作成 `test_table`(` id` bigint(20)noll auto_increment、 `name` varchar(255)default ''、` create_time`デフォルトnull、 `create_user_id` varchar(32)デフォルトnull、` update_time` defaultime null、 `update_user_id` varchar(32) int(8)デフォルトnull、プライマリキー( `id`))エンジン= innodb auto_increment = 1デフォルトcharset = utf8;
主キーはIDで、それ自体で増加します。ユニバーサルマッパーの使用方法を紹介する例としてのテーブルがあります。
Maven依存関係
<! - general mapper-> <dependency> <groupid> tk.mybatis </groupid> <artifactid> mapper </artifactid> <バージョン> 3.3.9 </version> </dependency>
SpringMVC構成
<! - general mapper-> <beanclass = "tk.mybatis.spring.mapper.mapperscannerconfigurer"> <propetyname = "basepackage" value = "cn.com.bluemoon.bd.service.spider.dao"/> <propertyname = "Properties" </value> </property> </bean>
tk.mybatis.spring.mapper.MapperScannerConfigure 、元のmybatis org.mybatis.spring.mapper.MapperScannerConfigurerを置き換えるためにここで使用されていることに注意してください。
利用可能なパラメーター:
ほとんどの場合、これらのパラメーターは使用されず、特別な状況がある場合は自分で研究できます。
エンティティの書き方
1つの原則を覚えておいてください:エンティティクラスのフィールド数> =データベーステーブルで動作する必要があるフィールドの数。デフォルトでは、エンティティクラスのすべてのフィールドはテーブル内のフィールドとして動作し、追加のフィールドがある場合は、 @Transientアノテーションを追加する必要があります。
@table(name = "test_table")public class testtablevoimplements serializable {private static final long serialversionuid = 1l; @id @generatedValue(generator = "jdbc")private long id; @Transient Private String UserID;プライベート文字列名;プライベートタイムスタンプCreateTime;プライベート文字列createuserid;プライベートタイムスタンプアップデートタイム;プライベート文字列updateuserid;プライベート整数isdelete; // get、set ...}説明:
ダオの書き方
従来のMyBatisの執筆では、DAOインターフェイスをマッパーファイルに関連付ける必要があります。つまり、SQLをDAOインターフェイスにメソッドを実装するために書き込む必要があります。一般的に、Mapperでは、DAOは豊富な方法を持つために共通のインターフェイスを継承する必要があります。
ジェネリックマッパーを継承すると、ジェネリックを指定する必要があります
public interface tabledaoextends mapper <testtablevo> {}マッパーを継承すると、継承されたマッパーにはマッパーのすべての一般的な方法があります。
選択します
方法:list <t> select(t record);
注:エンティティの属性値に基づいてクエリを使用し、クエリ条件に等しい符号を使用します
方法:t selectbyprimarykey(オブジェクトキー);
注:プライマリキーフィールドに基づくクエリ。メソッドパラメーターには、完全なプライマリキー属性を含める必要があります。クエリ条件は等しい符号を使用します。
方法:list <t> selectal();
注:すべての結果をクエリし、Select(null)メソッドは同じ効果を達成できます
方法:t selectone(t record);
注:エンティティ内のプロパティに従ってクエリすると、返品値は1つだけで、複数の結果がスローされます。クエリ条件は等しい符号を使用します。
方法:int selectcount(t record);
注:エンティティ内の属性の総数をクエリし、クエリ条件の等記号を使用します。
入れる
方法:int insert(t record);
注:エンティティを保存すると、null属性も保存され、データベースのデフォルト値は使用されません。
方法:int InsertSelective(t Record);
注:エンティティを保存すると、null属性は保存されず、データベースのデフォルト値が使用されます。
アップデート
方法:int updatebyPrimaryKey(T Record);
注:主キーに従ってエンティティのすべてのフィールドを更新すると、ヌル値が更新されます
方法:int updatebyPrimaryKeyselective(T Record);
説明:属性が主キーに従ってヌルでない値を更新します
消去
方法:int delete(t record);
注:エンティティ属性に従って条件として削除すると、クエリ条件に等しい標識を使用します
方法:int deleteByPrimaryKey(オブジェクトキー);
注:削除プライマリキーフィールドに従って、メソッドパラメーターには完全なプライマリキー属性を含める必要があります
例の方法
方法:リスト<t> selectbyexample(object example);
説明:例の条件に応じてクエリ
キーポイント:このクエリは、クラスのサンプルを介してクエリ列の指定をサポートし、SelectPortiesメソッドを使用してクエリ列を指定することをサポートします。
方法:int selectcountbyexample(object example);
説明:条件の例に従って総数をクエリします
方法:int updatebyexample(@param( "record")t record、@param( "emple")object example);
説明:条件の例に従ってエンティティレコードに含まれるすべてのプロパティを更新すると、null値が更新されます。
方法:int updatebyexampleselective(@param( "record")t record、@param( "emple")object example);
説明:エンティティレコードの更新例に従って条件に従って、nullではないプロパティ値が含まれています
方法:int deletebyexample(Object Example);
説明:例の条件に従ってデータを削除します
コードで使用されます
使用中にDAOを注入し、使用する準備ができています。
@autowiredprivate testabledao testabledao;
以下は一般的な執筆方法です。
新しい
testTablevo vo = new testTablevo(); // vo ... int row = testabledao.insertsectective(vo)の設定プロパティを省略します。
改訂
testTablevo vo = new testTablevo(); // vo ... int row = testabledao.updatebyprimarykeyselective(vo)の設定プロパティを省略します。
シングルをクエリします
testTablevo vo = new testTablevo(); vo.setId(123L); testTableVo result = testTabledAo.Selectone(vo);
条件付きクエリ
// exampleexample example = new example(testtablevo.class); // Criteriaexample.criteria criteria = createCriteria(); // contion Criteria.andequalto.andequalto( "isdelete"、0); critia.andlike( "name"、 "%abc123%"); testabledao.selectbyexample(例);
要約します
General Mapperの原則は、反射を通じてエンティティクラスの情報を取得し、対応するSQLを構築することです。したがって、エンティティクラスを維持する必要があります。これは、複雑で変更可能なニーズに対処するための非常に便利な利便性を提供します。上記の説明は、一般的なマッパーの単純な使用法です。実際のプロジェクトでは、ビジネスに基づいた一般的なマッパーに基づいて、より大きく、より一般的でよく使われる方法をカプセル化する必要があります。
スプリングブート構成付き
メイベン
<! - mybatis-> <dependency> groupid> org.mybatis.spring.boot.boot </groupid> <artifactid> mybatis-spring-boot-starter </artifactid> <バージョン> 1.3.1 </version> </dependency> <! - mapp> <dependency> <グループ<グループ</groupid> <artifactid> mapper-spring-boot-starter </artifactid> <バージョン> 1.1.4 </version> </dependency>
Application.Properties構成
#Mapper#Mappers Comma Separated Mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = falsemapper.identity = mysql
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。