Peut-être que de nombreuses chaussures pour enfants ne sont pas très claires qu'à MyBatis, diverses langues de script peuvent être utilisées pour définir SQL dynamique dans le fichier de mappeur; Actuellement, MyBatis prend en charge les langages de script inclut XML (par défaut); Velocity et freemarker. Utilisez différentes langues de script pour terminer l'écriture des fichiers de mappeurs. La première consiste à utiliser la langue de script que vous connaissez, et la seconde consiste à définir des instructions personnalisées plus et riches pour simplifier le développement du mappeur. En ce qui concerne l'analyse principale des scripts de support MyBatis, puis rédigez un article pour analyser les instructions de script personnalisées. Cet article présente d'abord l'utilisation de scripts de vitesse dans MyBatis.
Le projet MyBatis-Velocity vous permet d'utiliser commodément Velocity comme un langage de script pour compléter l'écriture de divers SQL dynamiques dans les fichiers de mapper.
Notez que la vitesse est largement utilisée dans les scripts. Si vous ne le connaissez pas, vous pouvez d'abord consulter le script de vitesse;
Installer
Ajouter Maven
<dependency> <proupId> org.mybatis.scripting </rombandid> <Artifactid> Mybatis-Velocity </ Artifactid> <Dersion> 1.2 </DERNIFRIENT> </DENDEFENCE>
Notez que nous utilisons MyBatis-Velocity version 1.2, qui nécessite une prise en charge MyBatis3.3;
Dans le fichier de configuration MyBatis, définissez le moteur de script de vitesse comme moteur de fichier de mappel par défaut:
<CypeAliases> ... <typalias type = "org.mybatis.scripting.velocity.driver" alias = "Velocity" /> </ typealiases> <mestriels> ... <setting name = "DefaultScriptingNanguage" value = "Velocity" /> </ Settings>
La configuration est complète.
Ensuite, vous pouvez utiliser le script Velocity dans le fichier de mappeur:
<select id = "FindSerson" lang = "Velocity"> #set ($ Pattern = $ _Parameter.name + '%') Sélectionner * à partir de la personne où le nom comme @ {modèle, jdbcType = varchar} </lect>Avis:
Si la vitesse est utilisée, les paramètres doivent être référencés à l'aide de @ {}, car la directive Velocity commence par #, comme #set #if, etc.;
En utilisant le script Velocity, vous pouvez également configurer le javatype et jdbcType correspondants dans les paramètres; Le format de configuration est: @ {propriété, att1 = val1, att2 = val2, ...}; Les éléments configurables sont Javatype, JDBCTYPE, MODE, NUMERICSCALE, RESULTMAP, TYPEHANDLER, JDBCTYPENAME;
Utilisez des variables en contexte dans les directives de vitesse et utilisez $ _Parameter comme référence préfixe, par exemple
#if ($ _ paramètre.name) #set ($ _ name = '%' + $ _ Paramètre.name + '%') et nom comme @ {_ name} #endCommande intégrée de MyBatis-Velocity
En plus de la directive Velocity, le projet MyBatis-Velocity définit certaines directives de vitesse intégrées pour MyBatis:
garniture
#Trim (préfixe PrefixOverrides Suffix Suffix SuffixOverrides) Body #end
La signification des paramètres est la même que la signification du paramètre de finition dans XML;
Un exemple:
#trim ("où" "et | ou") # if ($ _ paramètre.name) #set ($ _ name = '%' + $ _ paramètre.name + '%') et name comme {_ name} # end # end où
#Where () Body # end # où () est le même que <où> dans XML. Vous pouvez remplacer et / ou avant l'état et le remplacer par où; Notez que / où () a des supports;
mset
#mset () body # end # mset est ajouté un m avant lui, afin de le distinguer de la directive #set de vitesse elle-même. #mset équivaut à l'élément <Set> dans XML. Vous pouvez ajouter une instruction SET avant la condition et retirer le point-virgule au dernier bloc de réglage;
Un exemple:
<update id = "Update"> Updre user #mset () # if ($ _ paramètre.name) name = @ {name}, # end # if ($ _ paramètre.age) Âge = @ {age}, # end # if ($ _ paramètre.borndate) né répéter
#repeat (collection var séparateur ouvert Close) Body # fin # La directive de répétition est la même que l'élément <foreach> dans XML. Il peut facilement traverser les éléments de type collection / tableau et utiliser chaque élément:
Un exemple:
Sélectionnez * dans la ville # où () #repeat ($ _Parameter.ids $ id "," "State_id dans (" ")") @ {id} # fin # fin dans
#in (Collection Var Field) Body #end
La directive #In est une nouvelle directive qui peut rapidement générer le champ correspondant dans () dans des conditions de SQL; Dans la liste des paramètres, la collection représente le contenu de l'IN à traverser; Var représente le nom de référence temporaire de chaque objet dans la traversée; Le champ représente le nom de champ généré avant l'instruction in;
Un exemple:
Sélectionnez * dans la ville # où () #in ($ _Parameter.ids $ id "state_id") @ {id} # fin # finCommandes personnalisées
MyBatis-Velocity vous permet de personnaliser facilement vos propres instructions pour simplifier le développement. Les étapes des instructions personnalisées sont:
Ajoutez un fichier de configuration MyBatis-Velocity.Properties dans le ClassPath;
Créez votre propre classe d'analyse de directive Velocity;
Ajoutez la classe d'analyse de directive Velocity que vous avez créé vous-même dans le fichier de configuration;
Utiliser les directives dans le fichier MAPPER.xml;
Un exemple:
// DirectivePackage défini par l'utilisateur com.myproject.directives; // Les classes de directive personnalisées doivent hériter des classes de directifs; La classe publique MyDirective étend Directive {} // mybatis -velocity.properties// s'il existe plusieurs classes de directives personnalisées, séparez-les avec des demi-colons; userDirective = com.myproject.directives.mydirective; // Mappel XML FileSlect * De la ville #MyDirective () ...... #endUtilisation complète
Si vous utilisez Velocity-Mybatis, un mappeur de crud typique peut ressembler à ceci:
<mapper namespace = "mybatis.com._520it.mybatis.userperper"> <resultMap type = "user" id = "user_mapping"> <id column = "id" propriété = "id" /> <result Column = "name" propriété = "name" /> <result Column = "Age" propriété = "Âge" /> <résultat Column = " Column = "BornDate" Property = "BornDate" /> <ResultMap> <insert id = "add" keycolumn = "id" keyproperty = "id" usegeneratedKeys = "true"> Insérer dans l'utilisateur (nom, âge, né (@ {name, javatype = string, jdbcType = varchar}, @ {age}, @ {borndate}) </sert> <update id = "update"> use user #mset () # if ($ _ paramètre.name) name = @ {name}, # end # if ($ _ paramètre) Age = @ {},}, # fin # if ($ _ paramètre) Age = # fin # if ($ _ paramètre.borndate) né = @ {BornDate} # fin # endormi id = @ {id} </ update> <delete id = "Delete" ParameterType = "Long"> delete de l'utilisateur où id = @ {id} </ delete> <sql id = "user_column"> id, nom, âge, borndate </sql> resultMap = "user_mapping"> select <inclue refid = "user_column" /> depuis l'utilisateur où id = @ {id} </ select> <select id = "list" resultMap = "user_mapping"> sélectionner <inclure refid = "user_column" /> from user </ select> <sélectionn id = "listyname" resultMap = "user_mapping" paramètre » refid="user_column"/> FROM USER WHERE name = @{name}</select><select id="queryBy" resultMap="user_mapping">SELECT id,name,age,borndateFROM USER#where()#if($_parameter.name)#set($_name = '%'+$_parameter.name+'%')AND name LIKE @ {_ name} # end # end # if ($ _ paramètre.orderby) ordre par @ {orderby} @ {OrderType} # end # if ($ _ paramètre.pageSize> -1) limite @ {start}, @ {pageSize} #end </lect> </ mapper>Ce qui précède est une explication détaillée du tutoriel d'utilisation du script de vitesse MyBatis qui vous est présenté par l'éditeur (recommandé). J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!