Revue de base de l'utilisation:
Les instructions SQL sont stockées dans des fichiers XML ou des annotations Java. Un exemple de cartographie Mabatis (qui utilise l'interface Java et l'annotation MyBatis):
package org.mybatis.example; interface publique blogmapper {@Select ("select * from blog where id = # {id}") blog selectBlog (int id);}Exemple d'exécution:
BlogMapper Mapper = Session.getMapper (blogMapper.class); blog blog = mapper.selectblog (101);
Les instructions et mappages SQL peuvent également être externalisés en un fichier XML:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mappeur 3.0 // en" "http://mybatis.org/dtd/mybatis.Example.BLOGMPERS> Namespacepace =" org.mybatis.example " <select id = "selectBlog" ParameterType = "int" resultType = "blog"> Sélectionner * dans le blog où id = # {id} </ select> </ mapper>Vous pouvez également utiliser l'API MyBatis pour exécuter des instructions:
Blog blog = session.selectone ("org.mybatis.example.blogmapper.selectblog", 101);Pour plus de détails, veuillez vous référer au manuel d'utilisation fourni par le site Web de MyBatis.
Intégrer au printemps
MyBatis s'intègre à Spring Framework. Spring Framework permet à MyBatis de participer aux transactions de printemps, crée des mappeurs et des sessions MyBatis et les injecte dans d'autres haricots.
Voici un exemple de configuration XML de base: un mappeur est créé et injecté dans le bean "BlogService".
<bean id = "sqlSessionFactory"> <propriété name = "dataSource" ref = "dataSource" /> </ bean> <bean id = "blogmapper"> <propriété name = "SQLSessionFactory" Ref = "SqlSessionFactory" /> <propriété name = "MapperInterface" Value = "Org.mybatis.Example.Blogmapper" id = "blogService"> <propriété name = "blogmapper" ref = "blogmapper" /> </-bean>
Maintenant, appeler Mybatis ne nécessite qu'appeler un haricot:
classe publique BlogServiceIMPl implémente BlogService {BlogMapper privé BlogMapper; public void SetBlogMapper (blogMapper BlogMapper) {this.blogmapper = blogmapper; } public void dosomethingWithablog (int blogid) {blog blog = blogmapper.selectblog (blogid); ...}} SQLSessionFactory
Chaque application MyBatis prend une instance de l'objet SQLSessionFactory comme noyau. SQLSessionFactory lui-même est créé par SQLSessionFactoryBuilder. D'une manière générale, dans une application, une base de données ne correspondra qu'à une SQLSessionFactory, nous définissons donc généralement SQLSessionFactory en tant que singleton, ou l'injectons par le printemps, etc.
Les méthodes de création de SQLSessionFactoryBuilder pour créer SQLSessionFactory sont:
Les principaux paramètres conçus par ces méthodes sont InputStream, Environment et Properties, où InputStream est un flux d'entrée obtenu à partir du fichier de configuration; L'environnement représente l'environnement que vous utilisez actuellement parmi les nombreux environnements configurés dans le fichier de configuration, y compris les sources de données et les transactions, et l'environnement par défaut est utilisé par défaut; À l'aide de propriétés, MyBatis chargera les propriétés ou fichiers correspondants, qui peuvent être utilisés dans le fichier de configuration.
Bâtiment SQLSessionFactory de XML
SQLSessionFactory privé SQLSessionFactory SQLSessionFactory = NULL; static {try {inputStream est = Resources.getResourceSStream ("config / mybatis_config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (IS); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }} public static sqlSessionFactory getSQLSessionFactory () {return sqlSessionFactory; }
Ce qui suit est une structure de base des fichiers de configuration:
Le fichier de configuration de MyBatis comprend généralement les parties suivantes:
<environnements default = "Development"> <Environment id = "Development"> <transactionManager type = "jdbc" /> <dataSource type = "poolled"> <propriété name = "driver" value = "$ {jdbc.driver}" /> <propriété name = "url" value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.Username}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> </ataaSource> </ Environment> </ Environments> Étant donné que MyBatis peut configurer plusieurs environnements, vous pouvez spécifier un environnement spécifique lors de la création d'un SQLSessionFactory pour créer un SQLSessionFactory. Si vous ne le spécifiez pas, l'environnement par défaut sera utilisé.
transactionmanager
Il existe deux types de gestionnaires de transactions dans mybatis (c'est-à-dire type = ”[jdbc | géré]»):
JDBC cette configuration directement et utilise simplement les paramètres de validation et de retour de JDBC. Il s'appuie sur les connexions obtenues à partir de sources de données pour gérer la portée des transactions.
La configuration gérée ne fait que peu. Il ne commute ni ne fait reculer d'une connexion. Et il permet au conteneur de gérer l'intégralité du cycle de vie d'une transaction (comme le contexte du serveur d'applications Spring ou JEE), il ferme la connexion par défaut. Cependant, certains conteneurs n'en veulent pas, donc si vous devez l'arrêter de la connexion, définissez la propriété CloseConnection sur False.
source de données
L'élément DataSource utilise l'interface de source de données JDBC de base pour configurer les ressources pour les objets de connexion JDBC.
De nombreuses applications MyBatis configureront la source de données comme indiqué dans les exemples. Cependant, ce n'est pas nécessaire. Vous devez savoir que pour faciliter l'utilisation du chargement paresseux, des sources de données sont nécessaires.
Il existe trois types de source de données intégrés (c'est-à-dire Type = "???"):
Non sollicité La mise en œuvre de cette source de données est simplement d'ouvrir et de fermer la connexion à chaque fois qu'elle est demandée. C'est un peu lent, ce qui est un excellent choix pour les applications simples, car elle ne nécessite pas de connexions disponibles en temps opportun. Différentes bases de données fonctionnent également différemment à ce sujet, donc pour certaines bases de données, il n'est pas important de configurer la source de données, et cette configuration est également inactive. La source de données de type non bouclé n'est utilisée que pour configurer les 5 propriétés suivantes:
En option, vous pouvez transmettre les propriétés du pilote de base de données. Pour ce faire, le préfixe de l'attribut commence par "Driver". Par exemple:
driver.encoding = utf8
Cela transmettra la valeur "UTF8" pour passer le "codage" de la propriété, qui est transmis au pilote de base de données via la méthode driverManager.getConnection (URL, DriverProperties).
Regroupé il s'agit d'une implémentation du pool de connexion de source de données pour les objets de connexion JDBC, qui est utilisé pour éviter le temps de connexion initial et d'authentification nécessaire lors de la création de nouvelles instances de connexion. Il s'agit d'une méthode populaire actuellement utilisée par les applications Web pour répondre rapidement aux demandes.
En plus des attributs ci-dessus (non omis), de nombreux attributs peuvent être utilisés pour configurer la source de données groupée:
Parmi eux, la configuration de la source de données JNDI ne nécessite que deux propriétés:
(1) La propriété initial_context est utilisée pour trouver l'environnement à partir du contexte initial (c'est-à-dire initialContext.lookup (initial - context). Il s'agit d'une propriété facultative. Si elle est ignorée, la propriété DATA_SOURCE sera recherchée directement directement avec InitialContext comme arrière-plan.
(2) DATA_SOURCE Il s'agit du chemin qui fait référence au contexte de l'emplacement de l'instance de source de données. Il recherchera l'environnement renvoyé par la requête initial_context comme arrière-plan. Si initial_context ne renvoie pas le résultat, il recherchera directement le contexte initial comme l'environnement.
Ensuite, il y a un mappeur. Le mappeur est utilisé pour cartographier les instructions SQL. Tout d'abord, je dois dire à MyBatis où trouver ces instructions SQL, c'est-à-dire pour spécifier l'emplacement des ressources.
<mappers> <mapper ressource = "com / tiantian / mybatis / modèle / blogmapper.xml" /> </mappers>
Voici un fichier de configuration simple que j'ai fait pendant le processus de test:
<? xml version = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <propperties ressource = "config / jdbc.properties"> </ properties> <typealiases> <tycias alias = "blog" type = "com.tiantian.mybatis.model.blog" /> </ typealiases> <environnements default = "Develop name = "driver" value = "$ {jdbc.driver}" /> <propriété name = "url" value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.passwame}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> </ dataour> </ Environments> <Mappers> <mapper ressource = "com / tiantian / mybatis / model / blogmapper.xml" /> </mappers> </ configuration>
Un fichier de propriété externe est importé dans le fichier de configuration ci-dessus. L'introduction de la propriété dans le fichier de configuration MyBatis peut être directement incluse dans l'élément Properties, ou il peut être introduit à partir de l'extérieur à l'aide de l'élément Propriétés, ou il peut être transmis en tant que propriétés de paramètre lors de la création de la SQLSessionFactory. Étant donné que les propriétés dans les fichiers de configuration MyBatis peuvent être introduites à partir de nombreux endroits, cela implique un problème de priorité, et MyBatis les recherchera dans l'ordre suivant:
Tout d'abord, dans le fichier de configuration, les propriétés du corps de l'élément de propriétés sont lues, puis les propriétés du fichier de propriétés introduites de l'extérieur sont lues, qui écraseront les mêmes propriétés lues auparavant. Enfin, les propriétés des propriétés transmises lors de la création du SQLSessionFactory sont lues, qui écraseront également les mêmes propriétés auparavant.
Après avoir eu le SQLSessionFactory, vous obtiendrez une SQLSession spécifique. Dans le processus d'utilisation de MyBatis, chaque opération est inséparable à partir de SQLSession, il est donc très important d'obtenir un SQLSession. De plus, SQLSession ne peut pas être partagée et insérée par le thread, vous devez donc en ouvrir un chaque fois que vous avez besoin de SQLSession, puis de le fermer après l'avoir utilisé.
SQLSESSESSE SESSION = SQLSESSESSEFACTORY.OpenSESE ();
Les méthodes de SQLSessionfactory Zhonghu District SQLSession sont:
Leurs principales différences sont:
La méthode d'ouverture par défaut n'a pas de paramètres, il créera une SQLSession avec les caractéristiques suivantes:
ExecutorTy a trois valeurs:
Les opérations de base de MyBatis sont à ajouter, supprimer, modifier et vérifier, à savoir insérer, supprimer, mettre à jour et sélectionner. Lorsque vous effectuez ces opérations de base, vous pouvez utiliser directement SQLSession pour accéder à la mappage dans le fichier de configuration du mappeur, ou vous pouvez utiliser l'interface de mappel correspondant au fichier de configuration du mappeur pour effectuer des opérations, en supposant que les paramètres et les valeurs de retour des méthodes définies dans l'interface du mappeur doivent être les mêmes que les paramètres et les valeurs de retour défini dans le fichier de configuration du mapper. De plus, lors de l'utilisation de l'interface de mappeur, les instructions SQL correspondantes peuvent être écrites dans le fichier de configuration du mappeur, ou elles peuvent être directement marquées sur les méthodes correspondantes dans l'interface de mappeur à l'aide des annotations correspondantes. Cela sera vu dans l'exemple de code suivant.
Voici une série d'exemples de codes:
Postez d'abord une classe d'outils pour obtenir SQLSessionFactory:
Importer java.io.ioException; import java.io.inputStream; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlSessionFactory; import org.apache.ibatis.session.sqlSessionFactoryBuilder; classe publique util {private statique sqlSessionFactory sqlSessionFactory = null; static {try {inputStream est = Resources.getResourceSStream ("config / mybatis_config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder (). Build (IS); } catch (ioException e) {// TODO Bloc de capture généré automatiquement e.printStackTrace (); }} public static sqlSessionFactory getSQLSessionFactory () {return sqlSessionFactory; }}
Fichier de configuration MyBatis:
<? xml version = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <propperties ressource = "config / jdbc.properties"> </ properties> <typealiases> <tycias alias = "blog" type = "com.tiantian.mybatis.model.blog" /> </ typealiases> <environnements default = "Develop name = "driver" value = "$ {jdbc.driver}" /> <propriété name = "url" value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.passwame}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> </ dataour> </ Environments> <Mappers> <mapper ressource = "com / tiantian / mybatis / model / blogmapper.xml" /> </mappers> </ configuration>
Blogmapper.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappep Public "- // Mybatis.org//dtd Mappen 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace = "com.tiantian.mybatis.model.blogmapper"> <! - Ajouter un enregistrement -> <insert id = "insertblog" ParameterType = "Blog"> INSERT IN T_BLOG (Title, Content, propriétaire) VALEURS (# {title}, # {Content}, # {propriétaire}) </ INSERTER> <! ParameterType = "int" resultType = "Blog"> Sélectionner * FROM T_BLOG WHERE ID = # {id} </lect> <! - Modifiez l'enregistrement -> <Update Id = "UpdateBlog" ParameterType = "Blog"> Update T_Blog set title = # {title}, content = # {contenu}, propriétaire = # {propriétaire} où id = # # {id} et interroger plusieurs enregistrements pour retourner le résultat est une collection. ResultType n'est pas le type de collection, mais le type contenu dans la collection -> <select id = "selectall" resultType = "blog"> select * from t_blog </lect> <! - Fuzzy Query -> <select id = "FuzzyQuery" ResultType = "blog" Parametertype = "Java.Lang.string"> SELECT * à partir de T_BLOG </lect> <! - Delete Record -> <delete id = "DeleteBlog" ParameterType = "int"> delete de t_blog où id = # {id} </preete> </caper>Certains problèmes qui doivent être notés dans les déclarations de cartographie SQL:
Blog.java
Package com.tiantian.mybatis.model; Blog de classe publique {private int id; titre de chaîne privée; Contenu de chaîne privé; propriétaire de chaîne privée; public int getID () {return id; } public void setid (int id) {this.id = id; } public String getTitle () {return title; } public void SettItle (String Title) {this.title = title; } public String getContent () {return Content; } public void setContent (String Content) {this.Content = Content; } public String Outowner () {Return Owner; } public void setOnner (propriétaire de la chaîne) {this.owner = propriétaire; } @Override public String toString () {return "id:" + id + ", titre:" + title + ", contenu:" + contenu + ", propriétaire:" + propriétaire; }}
Blogmapper.java
Package com.tiantian.mybatis.model; Importer java.util.list; import org.apache.ibatis.annotations.delete; import org.apache.ibatis.annotations.insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.update; / ** * Les opérations suivantes 1 écrit SQL dans le fichier de configuration, tandis que les opérations 2 indiquent directement l'instruction SQL à exécuter avec des annotations * parce que le nom complet du mappeur est le même que l'espace de noms dans le fichier blogmapper.xml, il ne peut pas être inclus ici * Utiliser des annotations pour définir une carte avec le même nom de blogmapper. selectBlog (int id); @Select ("SELECT * FROM T_BLOG WHERE ID = # {ID}") Blog public selectBlog2 (int id); public void insertblog (blog blog); @Insert ("INSERT INT IN T_BLOG (Title, Content, propriétaire) VALEURS (# {Title}, # {Content}, # {propriétaire})") public void insertblog2 (blog blog); public void updateBlog (blog blog); @UpDate ("Update t_blog set title = # {title}, contenu = # {content}, propriétaire = # {propriétaire} où id = # {id}") public void updateBlog2 (blog blog); public void DeleteBlog (int id); @Delete ("Supprimer de t_blog où id = # {id}") public void deleteBlog2 (int id); LISTE PUBLIQUE <LOGOD> SELECTALL (); @Select ("SELECT * FROM T_BLOG") LISTE PUBLIQUE <LOCK> SELECTALL2 (); LISTE PUBLIQUE <LOGORD> FUZZYQUERY (Titre de la chaîne); @Select ("SELECT * FROM T_BLOG où le titre comme /"% / "# {title} /"% / "") Liste publique <LOGOD> FUZZYQUERY2 (titre de chaîne); }
Test1.java
Package com.tiantian.mybatis.test; Importer java.util.list; import org.apache.ibatis.session.sqlSession; import org.junit.test; import com.tiantian.mybatis.model.blog; import com.tiantian.mybatis.util.util; / ** * Cette série d'opérations est en écrivant SQL dans le fichier de configuration, puis en utilisant SQLSession pour l'opération * @Author Andy * * / public class Test1 {/ ** * Add Record * / @Test public Void TestiNsertBlog () {SqlSession Session = util.getsqlSessionFactory (). Blog blog = nouveau blog (); blog.settitle ("chinois"); blog.setContent ("combien de rêves ont été cachés dans le vent et la pluie pendant cinq mille ans"); blog.setowner ("quotidien"); session.insert ("com.tiantian.mybatis.model.blogmapper.insertblog", blog); session.Commit (); session.close (); } / ** * requête un seul enregistrement * / @Test public void testSelectone () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); Blog blog = (blog) session.selectone ("com.tiantian.mybatis.model.blogmapper.selectblog", 8); System.out.println (blog); session.close (); } / ** * Modifier l'enregistrement * / @Test public void TestupDateBlog () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); Blog blog = nouveau blog (); blog.setid (7); // L'ID du blog qui doit être modifié Blog.SetTitle ("Chinese 2"); // Modifier le titre Blog.SetContent ("Face jaune, Black Eyes, Inchanged Smile"); // Modifier le contenu Blog.Setowner ("Day 2"); // Modify propriétaire Session.Update ("Com.tiantian.mybatis.Model.Blogmper (Com.tiantian.mybatis.Model.Blogmper. blog); session.Commit (); session.close (); } / ** * Requête tous les enregistrements * / @Test public void TestSelectall () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); List <blog> blogs = session.selectlist ("com.tiantian.mybatis.model.blogmapper.selectall"); pour (blog blog: blogs) System.out.println (blog); session.close (); } / ** * Fuzzy Query * / @Test public void testFuzzyQuery () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); Titre de la chaîne = "Chine"; List <blog> blogs = session.selectlist ("com.tiantian.mybatis.model.blogmapper.fuzzyquery", titre); pour (blog blog: blogs) System.out.println (blog); session.close (); } / ** * Supprimer l'enregistrement * / @Test public void TestDeleteBlog () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); session.delete ("com.tiantian.mybatis.model.blogmapper.deleteblog", 8); session.Commit (); session.close (); }}
Test2.java
Package com.tiantian.mybatis.test; Importer java.util.list; import org.apache.ibatis.session.sqlSession; import org.junit.test; import com.tiantian.mybatis.model.blog; import com.tiantian.mybatis.model.blogmapper; import com.tiantian.mybatis.util.util; / ** * Cette série d'opérations consiste à écrire des instructions SQL dans le fichier de configuration, * puis à fonctionner via l'interface de mappeur correspondante * @Author Andy * * / public class Test2 {/ ** * Ajouter un enregistrement * / @Test public void TessiNsertBlog () {sqlSession Session = util.getsqlSessionFactory (). OpenSession (); Blog blog = nouveau blog (); blog.settitle ("chinois"); blog.setContent ("combien de rêves ont été cachés dans le vent et la pluie pendant cinq mille ans"); blog.setowner ("quotidien"); BlogMapper blogmapper = session.getmapper (blogmapper.class); blogmapper.insertblog (blog); session.Commit (); session.close (); } / ** * requête un seul enregistrement * / @Test public void testSelectone () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); Blog blog = blogmapper.selectblog (7); System.out.println (blog); session.close (); } / ** * Modifier l'enregistrement * / @Test public void TestupDateBlog () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); Blog blog = nouveau blog (); blog.setid (9); // L'ID du blog qui doit être modifié Blog.SetTitle ("Chinese 2"); // Modifier le titre Blog.SetContent ("Yellow Face, Black Eyes, Unchanged Smile"); // Modifier le contenu blog.setowner ("Day 2"); // Modifier le propriétaire blogmapper Blogmapper = session.getMapper (blogmapper.class); blogMapper.updateblog (blog); session.Commit (); session.close (); } / ** * Requête tous les enregistrements * / @Test public void TestSelectall () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); List <blog> blogs = blogmapper.selectall (); pour (blog blog: blogs) System.out.println (blog); session.close (); } / ** * Fuzzy Query * / @Test public void testFuzzyQuery () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); Titre de la chaîne = "Chine"; List <blog> blogs = blogmapper.fuzzyQuery (titre); pour (blog blog: blogs) System.out.println (blog); session.close (); } / ** * Supprimer l'enregistrement * / @Test public void TestDeleteBlog () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); BlogMapper.DeleteBlog (10); session.Commit (); session.close (); }}
Test3.java
Package com.tiantian.mybatis.test; Importer java.util.list; import org.apache.ibatis.session.sqlSession; import org.junit.test; import com.tiantian.mybatis.model.blog; import com.tiantian.mybatis.model.blogmapper; import com.tiantian.mybatis.util.util; / ** * Cette série d'opérations est effectuée à l'aide de l'interface de mapper *, mais son instruction SQL correspondante est définie sur la méthode correspondante dans le mappeur via l'annotation * @Author Andy * * / public Class Public Test3 {/ ** * Nouveau enregistrement * / @Test Public Void TestiNsert () {SqlSession Session = Util.GetsSQLLSSessionfactory (). BlogMapper blogmapper = session.getmapper (blogmapper.class); Blog blog = nouveau blog (); blog.setTitle ("title2"); blog.setContent ("Content2"); blog.setowner ("propriétaire2"); blogMapper.insertBlog2 (blog); session.Commit (); session.close (); } / ** * Trouvez un seul enregistrement * / @Test public void testSelectone () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); Blog blog = blogmapper.selectblog2 (1); System.out.println (blog); session.close (); } / ** * Trouvez plusieurs enregistrements, renvoyez le résultat en tant que collection * / @Test public void testSelectall () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); List <blog> blogs = blogmapper.selectall2 (); pour (blog blog: blogs) System.out.println (blog); session.close (); } / ** * Modifier un enregistrement * / @Test public void TestupDate () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); Blog blog = nouveau blog (); blog.setid (3); blog.setTitle ("title3"); blog.setContent ("Content3"); blog.setowner ("propriétaire3"); blogMapper.updateBlog2 (blog); session.Commit (); session.close (); } / ** * supprimer l'enregistrement * / @Test public void testdelete () {SQLSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); BlogMapper.DeleteBlog2 (5); session.Commit (); session.close (); } @Test public void testFuzzyQuery () {SqlSession Session = util.getsqlSessionFactory (). OpenSession (); BlogMapper blogmapper = session.getmapper (blogmapper.class); List <blog> blogs = blogmapper.fuzzyQuery2 ("Chine"); pour (blog blog: blogs) System.out.println (blog); session.close (); }}Énoncé de création de table correspondant:
Créer une table `t_blog` (` id` int (11) non null auto_increment, `title` varchar (255) par défaut null,` contenu` varchar (255) par défaut null, `propriétaire` varchar (50) par défaut, clés primaire (` id`)))