それは最善の使用であり、間違いなくいたずらではないと言われていますが、多くの人はなぜこのプラグインを使用するのか理解していません。 SQLの手書きとページネーションによってSQLを使用するのは良いことではありませんか...
だから私は特別にこのような例を書いて、なぜそれが最高なのかを説明しました。
次のように、マッパーインターフェイスとXMLを作成したとします。
パブリックインターフェイスsysloginlogmapper { / ** *クエリ条件に基づいてログインログをクエリ * @param logip * @param username * @param logindate * @param exitdate * / list <sysloginlog> findsysloginlog(@param( ")string string logip、 @param(username(" username( "username) @param( "logindate")string logindate、@param( "exitdate")string exitdate、@param( "logerr")string logerr); } <?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" namespace = "com.easternie.sys.dao.sysloginlogmapper"> <select id = "findsysloginlog" resulttype = "com.easternie.sys.vo.model.sysloginlog"> select * from sys_login_log a on a.userid = b.userid </if> <where> <if> "logip!= null and logip '%' ||#{username} || '%')</if> <if> <if stest = "logindate!= null and logindate!= ''"> and to_date(subst(a.logindate、0,10)、 'yyyy-mm-dd')= to_date(#{logindate}、 'yyymmdd')< test = "exitdate!= null and exitdate!= ''"> and to_date(substr(a.exitdate、0,10)、 'yyyy-mm-dd')= to_date(#{exitdate}、 'yyyymm-dd') '%' ||#{logerr} || '%' </if> </where> logid desc </select> </mapper>簡単な例ですが、ここのXMLはそれほど単純ではありません。
上記のような既製のMyBatisメソッドをすでに持っていて、このクエリを今すぐペアにしたい場合は、どうすればよいですか?
手書きのSQLの場合、2つのインターフェイスを追加する必要があります。1つは合計カウントをクエリし、もう1つはページネーションに変更する必要があります。 XMLにコピーして貼り付けて、ステートメントを変更することは難しいとは思われません。これをしましたか?
このプラグインを使用する場合、何をする必要がありますか? ? ?
Mybatisが書いたこれらの方法については、何も変更する必要はありません。
ただし、サービスレイヤーを移動する必要がある場合があります。上記の特定の例。以下のサービスレイヤーコールコードをご覧ください。
ページングが不要なときのコード:
パブリックリスト<Sysloginlog> findsysloginlog(string loginip、string username、string logindate、string exitdate、string logerr)slows businessexception {return sysloginlogmapper.findsysloginlog(loginip、username、usermame、logindate、exitdate、logerr); }ページング機能を追加した後のコード:
public PageHelper.Page <Sysloginlog> findsysloginlog(String loginip、string username、string logindate、string logerr、int pagenumber、int pagesize)slows businessecception {pagehelper.startpage(pageNumber、Paysize); sysloginlogmapper.findsysloginlog(loginip、username、logindate、exitdate、logerr); return pagehelper.endpage(); }比較:
リターン値は、<sysloginlog> gagehelper.page <sysloginlog>に変更されました。
PageNumberとPaysizeの2つのパラメーターが追加されました
次に、プロセスコードで最初に呼ばれます
pagehelper.startpage(pagenumber、pageize);
StartPageは、インターセプターにページングを開始することを伝えます。ページパラメーターはこれら2つです。
次に、元のMyBatisコードを呼び出します。
sysloginlogmapper.findsysloginlog(loginip、username、logindate、exitdate、logerr);
ここに受け取った返品値がないのは奇妙ですか?実際、PageHelperは自動的に返品値を受信しています。返品値は、次のコードを介して取得できます。
pagehelper.endpage();
同時に、Endpageはインターセプターに、私はページングを終了したが、もう必要ないと言った。
このようなコードはシンプルまたは手書きのSQLがシンプルだと思いますか?
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。