たぶん、多くの子供の靴は、MyBatisでは、さまざまなスクリプト言語を使用してマッパーファイルの動的なSQLを定義できることはあまり明確ではないかもしれません。現在、MyBatisはXML(デフォルト)を含むスクリプト言語をサポートしています。速度とフリーマーカー。さまざまなスクリプト言語を使用して、マッパーファイルの書き込みを完了します。 1つ目は、よく知っているスクリプト言語を使用することです。2つ目は、マッパーの開発を簡素化するために、より多くの豊富なカスタム指示を定義することです。 MyBatisサポートスクリプトの原則分析について、記事を書き、カスタムスクリプト命令を分析します。この記事では、最初にMyBatisで速度スクリプトの使用を紹介します。
MyBatis-Velocityプロジェクトを使用すると、Scripting言語としてVelocityを使用して、Mapperファイルでさまざまな動的SQLの執筆を完了することができます。
速度はスクリプトで広く使用されていることに注意してください。慣れていない場合は、まずVelocityスクリプトを確認できます。
インストール
Mavenを追加します
<Dependency> groupId> org.mybatis.scripting </groupid> <artifactid> mybatis-velocity </artifactid> <バージョン> 1.2 </version> </dependency>
MyBatis-Velocityバージョン1.2を使用していることに注意してください。これにはMyBatis3.3サポートが必要です。
MyBatis構成ファイルで、Velocity Scriptエンジンをデフォルトのマッパーファイルエンジンとして設定します。
<TypeAliase> ... <Typealias Type = "org.mybatis.scripting.velocity.driver" alias = "velocity"/> </typealiase> <settings> ... <setting name = "defaultscriptinglanguage" value = "velocity"/>> </settings>
構成が完了しました。
次に、マッパーファイルで速度スクリプトを使用できます。
<select id = "findPerson" lang = "velocity"> #set($ pattern = $ _parameter.name + '%')select * select * from name name yname 'pattern、jdbctype = varchar} </select> </select>
知らせ:
速度が使用される場合、#set #ifなどの#から#で始まるため、 @{}を使用してパラメーターを参照する必要があります。
Velocityスクリプトを使用して、パラメーターで対応するJavatypeとjdbctypeを構成することもできます。構成形式は次のとおりです。 @{property、attr1 = val1、attr2 = val2、...};構成可能なアイテムは、javatype、jdbctype、mode、numericscale、resultmap、typehandler、jdbctypenameです。
速度指示のコンテキストで変数を使用し、たとえばプレフィックス参照として$ _PARAMETERを使用します。
#if($ _ parameter.name)#set($ _ name = '%'+$ _ parameter.name+'%')および @{_ name} #endのような名前MyBatis-Velocity内蔵コマンド
速度指令に加えて、MyBatis-Velocityプロジェクトは、MyBatisの組み込み速度指示を定義しています。
トリム
#trim(prefix prefixoverrides suffix suffixoverrides)body #end
その中のパラメーターの意味は、XMLのトリムパラメーターの意味と同じです。
例:
#trim( "where" "and | or")#if($ _ parameter.name)#set($ _ name = '%'+$ _ parameter.name+'%')
どこ
#where()body#end#ここで、xmlの<where>と同じです。条件を交換および/または前に置き換えて、どこに置き換えることができます。 /where()にはブラケットがあることに注意してください。
mset
#mset()body#end#msetは、速度自体の#setディレクティブと区別するために、その前にmを追加します。 #msetは、XMLの<set>要素に相当します。条件の前に設定されたステートメントを追加し、最後のセットブロックでセミコロンを削除できます。
例:
<update id = "update"> Update user #mset()#if($ _ parameter.name)name =@{name}、#end#if($ _ parameter.age)age =@{age}、#end#if($ _ parameter.borndate)borndate =@{bonddate}繰り返す
#Repeat(コレクションVAR分離器を開く)ボディ#終了#繰り返しディレクティブは、XMLの<Foreach>要素と同じです。コレクション/配列タイプ要素を簡単に通過し、その中の各要素を使用できます。
例:
select *from City#where()#repeat($ _parameter.ids $ id "、" "state_id in(" ")") @{id}#end#endで
#in(collection var field)body #end
#INディレクティブは、SQLの条件で()ステートメントで対応するフィールドを迅速に生成できる新しいディレクティブです。パラメーターリストでは、コレクションは、トラバースされるINのコンテンツを表します。 VARは、トラバーサル内の各オブジェクトの一時的な参照名を表します。フィールドは、ステートメントの前に生成されたフィールド名を表します。
例:
select *from City#where()#in($ _parameter.ids $ id "state_id") @{id}#end#endカスタムコマンド
MyBatis-Velocityを使用すると、開発を簡素化するための独自の指示を便利にカスタマイズできます。カスタム指示の手順は次のとおりです。
ClassPathにMyBatis-Velocity.Properties構成ファイルを追加します。
独自のVelocityディレクティブ解析クラスを作成します。
作成した速度ディレクティブ解析クラスを構成ファイルに追加します。
mapper.xmlファイルでディレクティブを使用します。
例:
//ユーザー定義DirectivePackage com.myproject.directives; //カスタムディレクティブクラスは、ディレクティブクラスを継承する必要があります。パブリッククラスMyDirectiveはディレクティブを拡張します{} // mybatis-velocity.properties//複数のカスタムディレクティブクラスがある場合は、それらをセミコロンで分離します。 userDirective = com.myproject.directives.mydirection; // Mapper XML FilesElect *from City #MyDirective()...... #END包括的な使用
Velocity-Mybatisを使用している場合、典型的なCrudマッパーは次のようになります。
<mapper namespace = "mybatis.com._520it.mybatis.usermapper"> <resultmap type = "user" id = "user_mapping"> <id column = "id" property = "id"/> <result column = "name" name = "name"/> <result column = "age" age "age =" bornddate " Property = "BORNDATE"/> <resultMap> <挿入id = "add" keycolumn = "" id "keyproperty =" keyproperty = "usegeneratedkeys =" true "> inserting user(name、age、borndate)values(@{name、javatype = string、jdbctype = varchar}、@{age nepdate}、update}、< user #mset()#if($ _ parameter.name)name =@{name}、#end#if($ _ parameter.age)age =@{age}、#end#if($ _ parameter.borndate)born =@{bonddate} @{id} </delete> <sql id = "user_column"> id、name、age、borndate </sql> <select id = "get" resultmap = "user_mapping"> select <inculdid = "user_column"/> fromユーザーwhere user where user where user refid = "user_column"/> from user </select> <select id = "listbyname" resultmap = "user_mapping" parametertype = "string"> select <included refid = "user_column"/> fromユーザー= @{name = @{name} </select> <select> "queryby" resultffrユーザー#where()#if($ _ parameter.name)#set($ _ name = '%'+$ _ parameter.name+'%')およびname @{_ name}#end#end#if($ _ parameter.orderby)by @{orderby} @{Orderype} @{Ordertype} @{start}、 @{pagesize} #end </select> </mapper>上記は、編集者が紹介したMyBatis Velocityスクリプトの使用チュートリアルの詳細な説明です(推奨)。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!