Introduction à Mybatis
MyBatis est un excellent cadre de couche de persistance qui prend en charge les requêtes SQL simples, les procédures stockées et la cartographie avancée. MyBatis élimine les paramètres manuels de presque tous les code et paramètres JDBC et l'encapsulation de recherche de l'ensemble de résultats. MyBatis peut utiliser du XML ou des annotations simples pour la configuration et la cartographie originale, les interfaces de cartographie et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
1. Mybiats foreach Tag
Foreach est principalement utilisé dans la construction dans des conditions, il peut itérer une collection dans les instructions SQL. Les attributs de l'élément foreach incluent principalement l'élément, l'index, la collecte, l'ouverture, le séparateur et la fermeture. L'élément représente l'alias lorsque chaque élément de la collection est itéré. L'index spécifie un nom pour représenter la position à laquelle chaque itération est atteinte pendant le processus d'itération. Open représente ce qui commence par l'instruction, le séparateur représente les symboles utilisés comme séparateurs entre chaque itération, et la fermeture représente ce qui se termine. La chose la plus critique et la plus sujette aux erreurs lors de l'utilisation de Foreach est l'attribut de collection. Cet attribut doit être spécifié, mais dans différents cas, la valeur de l'attribut est différente. Il y a trois situations principales:
Si le passage est un paramètre unique et que le type de paramètre est une liste, la valeur d'attribut de collection est la liste
Si le passage est un paramètre unique et que le type de paramètre est un tableau, la valeur de la propriété de la collection est un tableau
S'il y a plusieurs paramètres passés, nous devons les résumer dans une carte
L'utilisation spécifique est la suivante:
<insert id = "insertbatch" ParameterType = "list"> insérer dans tStudent (name, age) <foreach collection = "list" item = "item" index = "index" open = "(" close = ")" séparateur = "Union all"> select # {item.name} comme a, # {item.age} comme b from Dual </ forach> </ insersert>2. MyBatis ExecutType.Batch
Il existe 3 types de Types Executort construits dans MyBatis. La valeur par défaut est simple. Dans ce mode, il crée une nouvelle instruction de prétraitement pour l'exécution de chaque instruction et soumet SQL en une seule ligne; tandis que le mode de lot réutilise les instructions prétraitées et exécute toutes les instructions de mise à jour par lots. De toute évidence, le mode lot a ses propres problèmes. Par exemple, lorsqu'une opération d'insertion, il n'y a aucun moyen d'obtenir l'identifiant auto-incrémenté avant la soumission de la transaction, qui ne répond pas aux exigences de l'entreprise dans une certaine situation.
L'utilisation spécifique est la suivante:
* Méthode un printemps + mybatis
// Obtenez SQLSession // Injecter le sqlSessionmplate d'origine de Spring @ AutowiredPrivate SqlSessionTemplate SqlSessionTemplate; // Obtenez une nouvelle session avec un lot, le soumettant automatiquement à False // Si la soumission automatique est définie, ce qui peut provoquer le nombre de soumissions de soumissions et la dernière séance d'union = la soumission unifiée est modifiée, sqlSessionTemplate.getsqlSessionFactory (). OpenSession (exécutorType.batch, false); // get mAperFoomAPPE = session.getMapper (FoomAPper.class); int size = 10000; essai {pour (int i = 0; i <size; i ++) {foo foo = new Foo (); foo.setname (string.valueof (System.currentTimemillis ())); foomApert.insert (foo); if (i% 1000 == 0 || i == size - 1) {// soumettre manuellement chaque 1000, session.commit () ne peut pas être sauvé après engagement après le cache pour prévenir la session Overflow. e) {// Aucune donnée soumise ne peut être annulée session.rollback ();} enfin {session.close ();} printemps + mybatisMéthode 2:
Combiné avec l'alias General Mapper SQL, il est préférable d'avoir le nom du package + nom de classe
public void insertbatch (map <string, object> Parammap, list <serv> list) lève une exception {// Obtenez une nouvelle session avec un lot, la soumettant automatiquement à false // Si la soumission automatique est définie sur true, le nombre de soumissions ne peut pas être contrôlé et la dernière soumission unifiée est modifiée à la dernière soumission unifiée, ce qui peut provoquer la mémoire de la session SQLSSSESSION = UNIFIEDE = sqlSessionTemplate.getsQlSessionFactory (). OpenSession (exécutorType.batch, false); try {if (null! = list || list.size ()> 0) {int lsize = list.size (); for (int i = 0, n = list.size (); i <n; i ++) {user user = user = list.get (i); user.setIndate ((string) parammap.get ("indate")); user.setDatadate ((String) Parammap.get ("datadate")); // attribution de données Time // session.insert ("com.xx.mapper.usermapper.insert", utilisateur); // session.update ("com.xx.mapper.usermapper.updatebyprimarykeySelective", _ entité); session.insert ("Nom de pack Chaque 1000, session.Commit () ne peut pas être annulé après Commit; // Nettoyez le cache pour empêcher Overflow Session.ClearCache ();}}}} Catch (Exception E) {// Aucune donnée soumise ne peut être rétablie {session.crollback (); e.printStackTrace ();} Enfin {session.close ();}}Ce qui précède est deux façons d'insertion par lots dans Mybatis qui vous a présenté par l'éditeur (insertion efficace). 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!