Quelles sont les caractéristiques de Mybatis-plus
1. Génération de code 2. Constructeur conditionnel
Pour moi, l'objectif principal est d'utiliser son puissant constructeur conditionnel.
Étapes rapides à utiliser:
1. Ajouter des dépendances de fichiers POM
<dependency> <proupId> org.apache.Velocity </proupId> <ArtifActid> Velocity </ ArtifactId> <Dersion> 1.7 </DERNIFRATION> </DENFENCENCE> <Dendency> <ProupID> com.baomidou </prouventid> <eRtifactid> Mybatis-Plus
Remarque: Mybatis-Plus maintiendra automatiquement les dépendances de MyBatis et Mybatis-Spring, il n'est donc pas nécessaire de présenter les deux derniers pour éviter les conflits de version.
2. Modifier le fichier de configuration
Remplacez simplement SQLSessionFactory de MyBatis par Mybatis-plus. MyBatis-Plus fait uniquement des extensions fonctionnelles:
<bean id = "sqlSessionFactory"> <propriété name = "dataSource" ref = "dataSource" /> <! - Scan automatique de mapping.xml fichier -> <propriété name = "MapperLocations" value = "ClassPath: mybatis / * / *. xml" /> <propriété name = "configlocation" Value = "ClassPath: Mybatis / Mybatis-Config.xml" /> <propriété name = "TYPEALIASESPACKAGE" Value = "com.baomidou.springmvc.model. *" /> <propriété name = "Plugins"> <Array> <! - PAGING PLUGIN Configuration -> <Bean Id = "Pagininterceptor"> <Property Name = "NABADERTYPE" Value = "MySQL" /> </ban> </RARAY> </ Property> <! - Injection de configuration globale -> <Property Name = "GlobalConfig" Ref = "GlobalConfig" /> </-bean>
Dans la configuration ci-dessus, en plus de la configuration régulière de MyBatis, il existe une configuration supplémentaire et une configuration globale du plug-in de pagination. MyBatis-Plus fournit une utilisation très pratique du plug-in de pagination, et il existe également une configuration globale comme suit:
<bean id = "GlobalConfig"> <! - Auto-> 0` ("Database ID Self-Incrament") Input-> `1` (User Input ID") id_worker-> `2` (" Global Unique ID ") UUID->` 3` ("Global Unique ID") -> <propriété name = "idType" value = "2" /> <! - Oracle-> `Oracle` DB2->` DB2` H2-> `H2` HSQL->` HSQL` SQLITE-> `SQLITE` POSTGRE->` PostgreSQL` SQLSERVER2005-> `SQLSERVER2005` SQLSERVER->` SQLSERVOR` - <! Cet élément -> <! - <propriété name = "dbType" value = "oracle" /> -> <! - Global Table set true for indebing name -> <propriété name = "dbColumnunderline" value = "true" /> </ bean>À ce stade, même si le travail de configuration est terminé, utilisons un exemple simple pour vivre son utilisation.
1. Créez une nouvelle table utilisateur:
@TableName ("utilisateur") La classe publique utilisateur implémente Serializable {/ ** ID utilisateur * / ID long privé; / ** Nom d'utilisateur * / nom de chaîne privée; / ** Âge de l'utilisateur * / âge entier privé; @TableField (existime = false) État de chaîne privée;}Il y a deux annotations à noter ici. Le premier est @tableName ("utilisateur"), qui spécifie l'association avec la table de base de données. L'annotation ici signifie qu'il devrait y avoir un tableau nommé utilisateur dans votre base de données correspondant à celui-ci, et le nom de la colonne de la table de données devrait être les attributs de la classe utilisateur. Pour les attributs qui sont dans la classe d'utilisateurs mais qui n'ont pas dans la table d'utilisateurs, une deuxième annotation @TableField (exist = false) est nécessaire pour exclure les attributs de la classe utilisateur.
2. Créez une nouvelle interface de couche Dao UserMapper:
/ ** * Interface de la couche de contrôle de la base de données de la table utilisateur * / interface publique UserMapper étend BasEmapper <ser utilis
L'interface DAO doit implémenter Basemapper, afin que de nombreuses méthodes encapsulées puissent être utilisées. De plus, vous pouvez également écrire des méthodes vous-même. @Select Annotation fait référence au fichier UserMapper référencé à partir de la troisième étape.
3. Créez un nouveau fichier de configuration UserMapper:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><Mapper namespace = "com.baomidou.springmvc.mapper.system.userper"> <! - Colonne des résultats de la requête générale -> <sql id = "base_column_list"> id, nom, âge </ql> <select id = "selectUserList" resultType = "user"> select * from sys_user où state = # {state} </ select>4. Créez une nouvelle classe de couche de service UserserService:
/ ** * * Table des données utilisateur Interface de la couche Service Implémentation Classe * * / @ ServicePublic Class Userservice étend ServiceImpl <UserMapper, user> {public Page <User> selectUserPage (Page <Serser> Page, String State) {page.SetRecords (BasEMapper.SelectUserList (page, état)); page de retour; }}UserService hérite de la classe ServiceIMPL. Mybatis-Plus injecte UserMapper en nous de cette manière. De cette façon, nous pouvons utiliser de nombreuses méthodes fournies par la couche de service par défaut, et nous pouvons également appeler les méthodes que nous écrivons dans la couche DAO pour faire fonctionner la base de données. La classe de page est un modèle que MyBatis-Plus fournit la fonction de pagination, hérite de la pagination, nous n'avons donc pas besoin d'écrire nous-mêmes une autre classe de page, utilisez-le simplement directement.
5. Créer une nouvelle couche de contrôleur UserController
@ControllerPublic Class UserController étend BasEController {@autowired private iuserservice userService; @ResponseBody @RequestMapping ("/ Page") Public Object SelectPage (modèle modèle) {page page = new Page (1,10); page = userService.SelectUserPage (page, "normal"); page de retour; }Ce qui précède complète une fonction de base. Jetons un coup d'œil à son constructeur conditionnel.
Builder conditionnel pour mybatis-plus
Tout d'abord, examinons la simple et la praticité d'une instance de constructeur conditionnel.
public void test () {entitywrapper ew = new EntityWrapper (); ew.SetEntity (nouvel utilisateur ()); String name = "wang"; Âge entier = 16; ew.where ("name = {0}", name) .AndNew ("Age> {0}", age) .OrderBy ("Age"); List <serser> list = userService.SelectList (EW); Page Page2 = userService.SelectPage (page, EW); }Ici, une classe de wrapper conditionnelle EntityWrapper est utilisée pour assembler les instructions SQL. Le principe est également facile à comprendre. Dans le code ci-dessus, le résultat de la première requête de liste consiste à interroger tous les enregistrements dans la base de données avec Name = Wang et l'âge> 16 ans et les trier selon l'âge. La deuxième requête consiste à ajouter une autre fonction de pagination.
Fondamentalement, l'utilisation d'entitéwrapper peut simplement compléter certaines requêtes conditionnelles, mais si la méthode de requête est utilisée très fréquemment, il est recommandé de l'écrire dans UserMapper vous-même.
La méthode de mappeur personnalisée peut-elle donc utiliser entitywrapper entity? Bien sûr, c'est également possible.
Un exemple de ceci est donné dans la documentation.
1. Définition dans Mappper:
Liste <User> selectMyPage (RowBounds RowBounds, @param ("ew") wrapper <T> wrapper);
2. Définir dans le fichier de mappeur:
<select id = "selectmypage" resultType = "user"> SELECT * FROM User $ {ew.sqlsegment} </lect>Pour l'épissage conditionnel d'EtityMapper, nous pouvons essentiellement implémenter où et, ou, groupby, ordonnance et autres syntaxes couramment utilisés dans SQL, et les méthodes de construction spécifiques peuvent être combinées de manière flexible.
@TestPublic void TestTSQL11 () {/ * * Entité avec sortie de la méthode d'utilisation de la requête pour voir le résultat * / ew.SetEntity (nouvel utilisateur (1)); ew.where ("name = {0}", "'zhangsan'"). et ("id = 1") .ornew ("status = {0}", "0"). ou ("status = 1") .notLIL .AndNew ("pwd = 11"). IsnotNull ("n1, n2"). Isnull ("n3") .groupby ("x1"). Groupby ("x2, x3") .having ("x1 = 11"). Ayant ("X3 = 433"). System.out.println (ew.getsqlsegment ());}Documents de référence
Documentation officielle de Mybaits-plus
Résumer
Ce qui précède est le tutoriel d'introduction rapide de l'outil MyBatis Plus qui vous a été présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, laissez-moi un message et l'éditeur vous répondra à temps!