La plupart des développeurs qui utilisent MyBatis rencontreront un problème, qui consiste à écrire une grande quantité de SQL dans le fichier XML. En plus de la logique commerciale spéciale SQL, il existe également un grand nombre de SQL avec des structures similaires. De plus, lorsque la structure de la table de base de données change, toutes les classes SQL et entités correspondantes doivent être modifiées. L'impact de cette charge de travail et de cette efficacité peut être la barrière entre l'ajout, la suppression, la modification et la vérification des programmeurs et des programmeurs réels. À cette époque, le Mappeur général a vu le jour ...
Qu'est-ce qu'un mappeur universel
General Mapper est un plug-in basé sur MyBatis pour résoudre le problème de l'ajout, de la suppression, de la modification et de la recherche de tables uniques. Les développeurs n'ont pas besoin d'écrire SQL ou d'ajouter des méthodes à DAO. Tant qu'ils écrivent bien la classe d'entité, ils peuvent prendre en charge les méthodes correspondantes d'ajout, de supprimer, de modifier et de rechercher.
Comment utiliser
Prenant MySQL comme exemple, supposons qu'il y ait une telle table:
Créer la table `test_table` (` id` bigint (20) pas null auto_increment, `name` varchar (255) par défaut '',` create_time` datemAltime default null, `create_user_id` varchar (32) par défaut nul int (8) par défaut null, clé primaire (`id`)) moteur = innodb auto_increment = 1 charse par défaut = utf8;
La clé principale est l'ID, qui augmente par lui-même. Voici un tableau comme exemple pour introduire comment utiliser un mappeur universel.
Dépendances Maven
<! - General Mapper -> <Dedency> <GroupId> Tk.mybatis </rombandid> <ArtifActid> Mappen </ Artifactid> <DERNÉRATION> 3.3.9 </ version> </Dependance>
Configuration de Springmvc
<! - General Mapper -> <Beanclass = "tk.mybatis.spring.mapper.mapperscannerconfigurer"> <propriépiedName = "Basepackage" value = "cn.com.bluemoon.bd.service.spider.dao" /> <propriétéName = "Properties"> <value mappers = tk.mybatis.mapper.capper.cape. </value> </prophed> </ban>
Notez que tk.mybatis.spring.mapper.MapperScannerConfigure est utilisé ici pour remplacer le mybatis original org.mybatis.spring.mapper.MapperScannerConfigurer .
Paramètres disponibles:
Dans la plupart des cas, ces paramètres ne seront pas utilisés et vous pouvez les étudier vous-même si vous avez des circonstances particulières.
Comment écrire des entités
N'oubliez pas un principe: Nombre de champs dans la classe d'entité> = nombre de champs qui doivent être utilisés dans la table de base de données. Par défaut, tous les champs de la classe d'entité sont exploités comme des champs dans le tableau, et s'il y a des champs supplémentaires, l'annotation @Transient doit être ajoutée.
@Table (name = "test_table") classe publique TestTableVoimplements serializable {private static final long SerialVersionUID = 1l; @Id @GeneratedValue (générateur = "JDBC") ID long privé; @Transient Private String UserId; nom de chaîne privé; Timestamp privé CreateTime; String privé CreateUserId; Timestamp privé UpdateTime; String Private UpdateSeUserID; Isdelete entier privé; // omettre obtenir, set ...}illustrer:
Comment écrire Dao
Dans l'écriture traditionnelle des mybatis, l'interface DAO doit être associée au fichier de mappeur, c'est-à-dire que SQL doit être écrit pour implémenter des méthodes dans l'interface DAO. En général, DAO n'a qu'à hériter d'une interface commune pour avoir des méthodes riches:
Héritage du mappeur générique, les génériques doivent être spécifiés
Interface publique TestTabledAoExtend Mappen <SestTablevo> {}Une fois que vous avez hérité du mappeur, le mappeur hérité a toutes les méthodes courantes du mappeur:
Sélectionner
Méthode: Liste <T> SELECT (T Record);
Remarque: requête en fonction de la valeur d'attribut dans l'entité et utilisez des signes égaux pour les conditions de requête
Méthode: t SelectByPrimaryKey (clé d'objet);
Remarque: Requête basée sur le champ de clé primaire. Les paramètres de la méthode doivent contenir des attributs de clé primaire complets. Les conditions de requête utilisent des signes égaux.
Méthode: Liste <T> selectall ();
Remarque: Interrogez tous les résultats, la méthode SELECT (null) peut obtenir le même effet
Méthode: t SelectOne (t disque);
Remarque: l'interrogation en fonction des propriétés de l'entité, il ne peut y avoir qu'une seule valeur de retour et plusieurs résultats sont lancés. Les conditions de requête utilisent des signes égaux.
Méthode: int selectCount (t enregistrement);
Remarque: interrogez le nombre total d'attributs dans l'entité et utilisez le signe égal pour les conditions de requête.
Insérer
Méthode: INT INSERT (T Record);
Remarque: Enregistrez une entité, l'attribut NULL sera également enregistré et la valeur par défaut de la base de données ne sera pas utilisée.
Méthode: int insertSelective (T disque);
Remarque: Enregistrez une entité, l'attribut NULL ne sera pas enregistré et la valeur par défaut de la base de données sera utilisée.
Mise à jour
Méthode: Int UpdateByPrimaryKey (T Record);
Remarque: Mettez à jour tous les champs de l'entité en fonction de la clé principale, la valeur nul sera mise à jour
Méthode: Int UpdateByPrimaryKeySelective (T Record);
Description: Mettez à jour la valeur dont l'attribut n'est pas nul selon la clé primaire
Supprimer
Méthode: int Delete (t Record);
Remarque: Supprimer en fonction des attributs d'entité comme conditions, utilisez des signes égaux pour les conditions de requête
Méthode: int DeleteByPrimaryKey (clé d'objet);
Remarque: Supprimer en fonction du champ de clé primaire, les paramètres de la méthode doivent contenir des attributs de clé primaire complets
Exemple de méthode
Méthode: Liste <T> selectByExample (Exemple d'objet);
Description: requête en fonction des exemples de conditions
Point clé: cette requête prend en charge la spécification des colonnes de requête via la classe Exemple et la spécification des colonnes de requête via la méthode SelectProperties.
Méthode: int selectCountByExample (Exemple d'objet);
Description: Interrogez le nombre total en fonction des exemples de conditions
Méthode: int updateByExample (@param ("enregistrer") T enregistrement, @param ("exemple") Exemple d'objet);
Remarque: Mettez à jour toutes les propriétés contenues dans l'enregistrement d'entité en fonction des exemples de conditions, et la valeur nul sera mise à jour.
Méthode: int udatedByExampleSlective (@param ("enregistrer") T enregistrement, @param ("exemple") Exemple d'objet);
Description: Mise à jour de l'enregistrement d'entité en fonction des exemples de conditions contient la valeur de propriété qui n'est pas nul
Méthode: int DeleteByExample (Exemple d'objet);
Description: Supprimer les données en fonction des exemples de conditions
Utilisé dans le code
Injecter DAO en service et il est prêt à l'emploi.
@AutowiredPrivate TestTabledAo TestTabledAo;
Ce qui suit est une manière générale d'écriture:
Nouveau
TestTableVo vo = new TestTablevo (); // omettez les propriétés de réglage pour vo ... int row = testTabledAo.InsertSelective (VO);
Réviser
TestTableVo vo = new TestTablevo (); // omettez les propriétés de réglage pour vo ... int row = testTabledao.updateByprimaryKeySelective (vo);
Interroger un seul
TestTableVo vo = new TestTableVo (); vo.SetId (123L); TestTableVo result = TestTabledAo.Selectone (Vo);
Requête conditionnelle
// Créer un exemple de exemple de exemple = nouvel exemple (TestTablevo.Class); // Créer des critères de critère.Criteria Critères = Exemple.CreateCriteria (); // Ajouter des critères de condition.
Résumer
Le principe du mappeur général est d'obtenir les informations des classes d'entités par la réflexion et de construire le SQL correspondant. Par conséquent, nous n'avons qu'à maintenir les cours d'entités, ce qui offre une grande commodité pour répondre aux besoins complexes et modifiables. La description ci-dessus n'est qu'une simple utilisation du mappeur général. Dans les projets réels, nous devons toujours encapsuler une méthode plus grande, plus générale et mieux utilisée basée sur le mappeur général basé sur l'entreprise.
Avec configuration de démarrage de printemps
Maven
<! - Mybatis -> <dependency> <proupId> org.mybatis.spring.boot </proupId> <Artefactive> Mybatis-Spring-Boot-starter </ artifactid> <version> 1.3.1 </ version> </pedency> <! - Make -> <Dedency> <ProupId> Tk.Mybatis </ GroupId> <ArtefactId> Mappeur-Spring-Boot-Starter </ ArfactId> <DERNÉRATION> 1.1.4 </DERNIERSE> </DENDENCENCE>
Configuration application.properties
# mappeur # mappers virgules séparées mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = falSemapper.Identity = MySql
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.