Maison >Java >javaDidacticiel >Premiers pas avec MyBatis (5) --- Chargement et mise en cache retardés

Premiers pas avec MyBatis (5) --- Chargement et mise en cache retardés

黄舟
黄舟original
2016-12-21 14:34:161331parcourir

1. Créer une base de données

1.1. Créer une base de données


/*SQLyog EnterPRise v12.09 (64 bits)MySQL - 5.7.9-log : Base de données - mybatis
************************ ***********************************************// *!40101 SET NOMS utf8 */;/*!40101 SET SQL_MODE=''*/;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS , FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;CREATE DATABASE /*! 32312 IF NOT EXISTS*/`mybatis` /*!40100 DEFAULT CARACTER SET utf8 */;USE `mybatis`;/*Structure de table pour la table `author` */DROP TABLE IF EXISTS `author`;CREATE TABLE `author` (
 `author_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '作者ID主键',
 `author_username` varchar(30) NOT NULL COMMENT '作者用户名',
 `author_passWord` varchar(32) COMMENTAIRE NON NULL '作者密码',
 `author_email` varchar(50) COMMENTAIRE NON NULL '作者邮箱',
 `author_bio` varchar(1000) DEFAULT '这家伙很赖,什么也没留下' COMMENTAIRE '作者简介',
 `register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',  PRIMARY KEY (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;/*Données pour la table `author ` */insert  dans les valeurs `author`(`author_id`,`author_username`,`author_password`,`author_email`,`author_bio`,`register_time`) (1,'张三','123456','123@QQ .com','张三是个新手,刚开始注册','2015-10-29 10:23:59'),(2,'李四','123asf','lisi@163.com','魂牵梦萦 ','2015-10-29 10:24:29'),(3,'王五','dfsd342','ww@sina.com','康熙王朝','2015-10-29 10 : 25:23'),(4,'赵六','123098sdfa','zhaoliu@qq.com','花午骨','2015-10-29 10:26:09'),(5,'钱七','zxasqw','qianqi@qq.com','这家伙很赖,什么也没留下','2015-10-29 10:27:04'),(6,'张三丰', '123456','zhangsf@qq.com','这家伙很赖,什么也没留下','2015-10-29 11:48:00'),(7,'张无忌','qwertyuiop', 'wuji@163.com','这家伙很赖,什么也没留下','2015-10-29 11:48:24'),(8,'fdsf','ffff','fdsfds', NULL,NULL),(9,'fdsf','ffff','fdsfds',NULL,NULL),(10,'aaaa','bbbb','ddd@qq.com','这家伙很赖,什么也没留下','2015-10-29 22:07:45');/*Structure de table pour la table `blog` */DROP TABLE IF EXISTS `blog`;CREATE TABLE `blog` (
 ` blog_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'BlogId主键',
 `blog_title` varchar(255) NOT NULL COMMENT 'blog标题',
 `author_id` int(11) unsigned NOT NULL COMMENT '作者ID外键',  CLÉ PRIMAIRE (`blog_id`),  CLÉ `fk_author_id` (`author_id`),  CONSTRAINT `fk_author_id` CLÉ ÉTRANGÈRE (`author_id`) RÉFÉRENCES `author` (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;/*Données de la table `blog` */insert  dans les valeurs `blog`(`blog_id`,`blog_title`,`author_id`) (1,'小张的Blog',1) ,(2,'小李',2),(3,'王五不是人',3),(4,'赵地人',4),(5,'钱钱钱',5);/ *Structure de table pour la table `posts` */DROP TABLE IF EXISTS `posts`;CREATE TABLE `posts` (
 `post_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章主键ID',
 `post_subject ` varchar(255) NOT NULL COMMENT '文章主题,标题',
 `post_body` text NOT NULL COMMENT '文章内容最大3000个字符',
 `blog_id` int(11) unsigned NOT NULL COMMENT 'B journal主键做外键',
 `createtime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '文章创建时间',  CLÉ PRIMAIRE (`post_id`),  CLÉ `fk_blog_id` (`blog_id`),  CONSTRAINT `fk_blog_id` FOREIGN CLÉ (`blog_id` ) RÉFÉRENCES `blog` (`blog_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;/*Données pour la table `posts` */insérer dans les valeurs `posts`(`post_id`,`post_subject`,`post_body`,`blog_id`,`createtime`) (1, 'Introduction à Mybatis 1', 'Qu'est-ce que MyBatis ? rnMyBatis est un excellent framework de couche de persistance qui prend en charge le SQL personnalisé, les procédures stockées et le mappage avancé. MyBatis évite presque tout le code JDBC et la configuration manuelle des paramètres et l'obtention d'ensembles de résultats. MyBatis peut utiliser du XML simple ou des annotations pour la configuration et des cartes natives pour mapper les interfaces et les POJO Java (objets Java ordinaires, objets Java ordinaires) dans les enregistrements de la base de données ',1,'2015-10-29 10 : 32:21'). ,(2,'Introduction à Mybatis 2','Pour utiliser MyBatis, placez simplement le fichier mybatis-x.x.x.jar dans le chemin de classe.',1,'2015-10-29 10:32:52 '),(3,' Oracle Learning','Oracle Database, également connu sous le nom d'Oracle RDBMS, ou Oracle en abrégé, il s'agit d'un système de gestion de base de données relationnelle d'Oracle Company',2,'2015-10-29 10:33:26' ),(4, 'JAVA Learning 1', 'Java est le nom général du langage de programmation orienté objet Java et de la plateforme Java lancée par Sun Microsystems en mai 1995',3,'2015-10-29 10:34: 17'),(5 ,'PL/SQL','PL/SQL est également un langage de programmation appelé Procedural Language/SQL. PL/SQL est une extension de la base de données Oracle aux instructions SQL',4, '2015-10-29 10:37:52'. ),(6,'Sélecteur de balise CSS','Tag selectorrnID selectorrnClass selectorrnSpecial selector',5,'2015-10-29 10 :39:44'),(7,'javascript','js: est un frontal langage de script',2,'2015-10-29 10:40:18');/*!40101 SET SQL_MODE=@OLD_SQL_MODE */ ;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS =@OLD_UNIQUE_CHECKS */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

Tableaux de données et données

2. Créer un projet

2.1. Créer un projet


3.

3.1, 3 classes d'entités

package com.pb.mybatis.po; import java.util.Date;/**
*

* @ClassName : Auteur

* @Description : TODO(auteur)

* @auteur Liu Nan

* @date 2015 -10-31 12:39:33

**/public class Auteur { //Identifiant de l'auteur
private Integer authorId; //Nom de l'auteur
private String authorUserName; //Mot de passe de l'auteur
private String authorPassword; //E-mail de l'auteur
private String authorEmail; 🎜> private String authroBio; //Heure d'enregistrement
private Date registerTime;


public Integer getAuthor ID() { return authorId;
} public void setAuthorId(Integer authorId) { this. authorId = authorId;
} public String getAuthorUserName() { return authorUserName;
} public void setAuthorUserName(Str ing authorUserName) { this.authorUserName = authorUserName;
} public String getAuthorPassword() { return authorPassword;
} public void setAuthorPassword(String authorPassword) { this.authorPassword = authorPassword;
} public String getAuthorEmail () { return authorEmail;
} public void setAuthorEmail(String authorEmail) { this.authorEmail = authorEmail;
} public String getAuthroBio() { return authroBio;
} public void setAuthroBio(String authroBio) { this.authroB io = authroBio;
} public Date getRegisterTime() {       return registerTime;
  }     public void setRegisterTime (Date registerTime) {         this.registerTime = registerTime; authorUserName = " 🎜>

}





package com.pb.mybatis.po;import java.util.List;public class Blog {    
   //Blog,ID
   private Integer blogId;    //Blog 名称标题
   private String blogTitle ;    //外键authorId    //作者
   private Author author ;    //文章 列表
   private Integer authorId ;    
   //文章列表
   Liste privée Liste des messages ;        } public void setBlogTitle(String blogTitle) {        this.blogTitle = blogTitle;
   }    public Author getAuthor() {        return author;
       public void setAuthor(Auteur auteur) {        this.author = author;
   }   public Integer getAuthorId() {        return authorId;
   }    public void setAuthorId(Integer authorId) {        this.authorId = authorId;
        public List getPostsList() {        return postsList;
   }    public void setPostsList(List postsList) {        this.postsList = postsList;
   }
   
   
 Remplacer    public String toString() {        return "Blog [blogId=" blogId ", blogTitle=" blogTitle                  ", authorId=" authorId "]";
   }
   
   

   
   
   

>


 

package com.pb.mybatis.po;import java.util.Date;public class Posts {    //文章ID

   private Integer postId ;    //文章标题

   private String postTitle ;    //文章主体内容

   private String postBody ;    

   //外键
   private Integer blogId ;    //建立时间
   private Date createTime ;        } public void setPostTitle(String postTitle) {        this.postTitle = postTitle;
   }    public String getPostBody() {        return postBody;
   }    public void setPostBody(String postBody) {        this.postBody = postBody;
   }    public Date getCreateTime() {        return createTime;
   }    public void setCreateTime(Date createTime) {        this.createTime = createTime;
         
   
   public Integer getBlogId() {        return blog Identifiant;
   }    public void setBlogId(Integer blogId) {        this.blogId = blogId;
   }
   @Override    public String toString() {        return "Posts [postId=" postId ", postTitle=" postTitle                 ", postBody=" postB ody", createTime=" createTime                 ", blogId=" blogId "]";
   }
   
   
   
   
   
   
}


 

 

 

3.2、3个接口

 

package com.pb.mybatis.mapper;import com.pb.mybatis.po.Author;public interface AuthorMapper {    /**
*

* @Titre : findAuthorById

* @Description : TODO (recherche par identifiant)

* @param @param id
* @param @ return Fichier de paramètres

* @return Auteur Type de retour

* @throws
*/
   public Author findAuthorById(int id);
}

 

package com.pb.mybatis.mapper;import com.pb.mybatis.po.Blog;interface publique BlogMapper {    
   /**
*

* @Title : findBlogById

* @Description : TODO (trouver un BLOG basé sur BLOGID, un auteur associé et implémenter un chargement différé avec les publications)

* @param @param id
* @param @return Fichier de paramètres

* @return Blog Type de retour

* @throws
*/
   public Blog findBlogById(int blogId);

}

 

package com.pb.mybatis.mapper;import java.util.List;import com.pb.mybatis.po.Posts;interface publique PostsMapper {    /**
*

* @Title : findPostsByBlogId

* @Description : TODO (trouver une liste de publications basée sur BLOGID)

* @param @param blogId
* @ param @return Fichier de paramètres

* @return List Type de retour

* @throws
*/
   liste publique findPostsByBlogId(int blogId);
}

 

 

 

 

四、建立mapper.xml与configuration.xml

4.1、相对应的mapper.xml

AuthorMapper.xml

 

br/>  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3- mapper.dtd">< ;result property="authorEmail" column="author_email"/> resultMap>

 

 

 

BlogMapper.xml

 

br/> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> > ;

PostsMapper.xml

br/> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http:// mybatis.org/dtd/mybatis-3-mapper.dtd"> mapper>

4.2, configuration.xml

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?character=utf8
username=root
mot de passe =root

Activer le chargement différé et désactiver le chargement immédiat







PUBLIC "-//mybatis.org//DTD Config 3.0//FR"
"http://mybatis.org/dtd/mybatis-3-config.dtd">< ;settings>< ;environments default=" development">


< ;!--Source de données -->







5.1.

package com.pb.mybatis.mapper; importer java.io.InputStream; importer java.util.List; importer org.apache.ibatis.io.Resources; importer org.apache.ibatis.session.SqlSession; importer org .apache.ibatis.session.SqlSessionFactory; importer org.apache.ibatis.session.SqlSessionFactoryBuilder; importer org.junit.Before; importer org.junit.Test; importer com.pb.mybatis.po.Blog; importer com.pb. mybatis.po.Posts;public class BlogMapperTest {    private SqlSessionFactory sqlSessionFactory;

   @Avant    public void setUp() lève une exception {
       String config="configuration.xml";
       InputStream resource=Resource s. getResourceAsStream(config);
       sqlSessionFactory=new SqlSessionFactoryBuilder().build(resource);
   }    /**
*

* @Titre : testFindBlogs

* @Description : TODO (chargement différé)

* @param Fichier de paramètres

* @return void Type de retour

* @throws
*/
   @Test    public void testFindBlogById() {        //建竫会话
SqlSession sqlSession=sqlSessionFactory.openSession();        //获取Mapper接口对象
       BlogMapper blogMapper=sqlSession.getMapper(BlogMapper.class);        //调用Mapper方法
       Blog blog=blogMapper.findBlogById(1);
       
       System.out.println(blog.getBlogId() "..." blog.getBlogTitle());
System.out.println("===========开始延时加载作者Author===========");
       System.out.println(blog.getAuthor ());
       System.out.println("===========开始延时加载文章===========");
       Liste        for(Posts p:list){
           System.out.println("count " count );
           System.out.println(p.getPostId());
           System.out.println(p.getPostTitle());
           System.out.println(p.getPostBody());
           System.out.println(p.getCreateTime());
System.out.println(p.getBlogId());
        }*/
       
   }

}

 

结果:

DEBUG [principal] - ==>  Préparation : SELECT * FROM blog WHERE blog_id=? DÉBOGAGE [principal] - ==> Paramètres : 1(Entier)
DEBUG [principal] - 1...小张的Blog===========开始延时加载作者Auteur= ==========DEBUG [principal] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 1(Integer)
DEBUG [main] -  Préparation : sélectionnez * parmi les articles où blog_id=? DÉBOGAGE [principal] - ==> Paramètres : 1(Integer)
DEBUG [main] -

 

六、一级缓存

6.1、mybatis一级缓存

 mybatis,默认开启了一级缓存,sqlSession中默认有一个hashMap

当查询时,先去hashMap中查找,

如果有就直接,取出,不再操作数据库

如果没有就去数据库查找,并放在haspMap中

当做事物时,如添加,删除,修改,后有commit时会清空一级缓存

Premiers pas avec MyBatis (5) --- Chargement et mise en cache retardés

sqlSession是互不影响的,一级缓存

 

6.2、还是上级的例子

Nom : 查询用户

 

 

package com.pb.mybatis.mapper; importer un org.junit.Assert.* statique; importer java.io.InputStream; importer org.apache.ibatis.io.Resources; importer org.apache.ibatis.session.SqlSession ;importer org.apache.ibatis.session.SqlSessionFactory;importer org.apache.ibatis.session.SqlSessionFactoryBuilder;importer org.junit.Before;importer org.junit.Test;importer com.pb.mybatis.po.Author;classe publique AuthorMapperTest {    private SqlSessionFactory sqlSessionFactory;

   @Before    public void setUp() lève une exception {
       String config="configuration.xml";
       InputStream resource=Resources.getResourceAsStream(config );
sqlSessionFactory=new SqlSessionFactoryBuilder().build(resource);
   }

   @Test    public void testFindAuthorById() {        //获取会话工厂
       SqlSession sqlSession=sqlSessionFactory.openSession();
AuthorMapper authorMapper=sqlSession.getMapper(AuthorMapper.class);        //第一次查询
       Auteur author1=authorMapper.findAuthorById(2);
       System.out.println(author1);        //再次查询同样的
       Auteur author2=authorMapper.findAuthorById(2);
       System.out.println(author2);        

>


 

 

 

结果:

 

DEBUG [principal] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 2(Integer)

DEBUG [main] - Auteur [authorId=2, authorUserName=李四, authorPassword=123asf, authorEmail=lisi@163.com, authroBio=魂牵梦萦 , registerTime=Jeudi 29 octobre 10:24:29 CST 2015]DEBUG [principal] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 4(Integer)

DEBUG [main] -

 

 

 

6.3、当查询后,做事务,再查询第一次的

接口中做添加方法

 

/**

*

* @Titre : addAuthor


* @Description : TODO(Add)

* @param @param author
* @param @return Set Fichier défini

* @return int Type de retour

* @throws
*/
   public int addAuthor(Auteur auteur);


 

 

 

mapper.xml中做同样的select

 

< ; paramètre name="aggressiveLazyLoading" value="false"/>> ;

2. Mapper correspond à la classe pojo pour implémenter la sérialisation

Premiers pas avec MyBatis (5) --- Chargement et mise en cache retardés

3. authorMapper


7.3. Test

@Test public void testCache() { // Récupère la fabrique de session
SqlSession sqlSession1 = sqlSessionFactory .openSession () ;
AuthorMapper1 = sqlSession1.getMapper(AuthorMapper.class); // Première requête
AuthorMapper1 = authorMapper1.findAuthorById(2); //Doit être désactivé, aucune donnée ne peut être écrite dans la zone de cache s qlSession1.close( ; sqlSession2.close();*/
// Récupère la fabrique de sessions
SqlSession sqlSession3 = sqlSessionFactory.openSession();
AuthorMapper authorMapper3 = sqlSession3.getMapper(AuthorMapper.class); / / Première requête
Auteur author3 = authorMapper3.findAuthorById(2) ;
sqlSession3.close();
}



DEBUG [main] - Cache Taux de réussite [com.pb.mybatis.mapper.AuthorMapper] : 0,0 DEBUG [main] - Ouverture de la connexion JDBC

DEBUG [main] - Connexion créée 873769339.

DEBUG [main] - Définition de la validation automatique sur false sur la connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]

DEBUG [main] - ==> Préparation : sélectionnez * de l'auteur où author_id=? Paramètres : 2 (entier)
DEBUG [main] - DEBUG [main] - Fermeture de la connexion JDBC [com.mysql .jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - Connexion renvoyée 873769339 au pool.
DEBUG [main] - Taux de réussite du cache [com.pb.mybatis.mapper.AuthorMapper] : 0,5


Ajouter une opération de validation au milieu

@ Test public void testCache() { // Obtenez la fabrique de session

SqlSession sqlSession1 = sqlSessionFactory.openSession();

AuthorMapper1 = sqlSession1.getMapper (AuthorMapper.class); // Première requête

Author author1 = authorMapper1.findAuthorById(2); // Doit être fermé car les données ne peuvent pas être écrites dans la zone de cache sqlSession1.close(); (AuthorMapper.class);
Author2 = authorMapper2.findAuthorById(2); //Mise à jour
author2.setAuthorUserName("Chairman");
author2.setAuthroBio("Company");
authorMapper2. updateAuthor(author2); //commit effacera la zone de cache sqlSession2.commit();
sqlSession2.close(); // Obtient la fabrique de session
SqlSession s qlSession3 = sqlSessionFactory.openSession();
AuthorMapper authorMapper3 = sqlSession3.getMapper(AuthorMapper.class); // Première requête
AuthorMapper3 = authorMapper3.findAuthorById(2);
sqlSession3.close();
}


Résultat :

DEBUG [main] - Taux de réussite du cache [com.pb.mybatis.mapper.AuthorMapper] : 0.0DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion créée 873769339.
DEBUG [main ] - Définition de la validation automatique sur false sur la connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 2 (entier)
DEBUG [main] - DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - Connexion renvoyée 873769339 au pool.
DEBUG [main] - Taux de réussite du cache [com.pb.mybatis.mapper.AuthorMapper ] : 0.5DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion extraite 873769339 du pool.
DEBUG [main] - Définition de la validation automatique sur false sur la connexion JDBC [com.mysql.jdbc.JDBC4Connection@ 3414a97b]
DEBUG [principal] - ==>  Préparation : mise à jour de l'auteur SET author_username=?, author_password=?, author_email=?, author_bio=?, register_time=? où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 董事长(String), 123asf(String), lisi@163.com(String), 公司(String), 2015-10-29 10:24:29.0(Timestamp), 2(Integer)
DEBUG [ main] - DEBUG [main] - Réinitialisation de la validation automatique sur true sur la connexion JDBC [com.mysql.jdbc. JDBC4Connection@3414a97b]
DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - Connexion renvoyée 873769339 au pool.
DEBUG [main] - Cache Hit Ratio [com.pb.mybatis.mapper.AuthorMapper] : 0,3333333333333333DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion extraite 873769339 du pool.
DEBUG [main] - Définition de la validation automatique sur false sur Connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [principal] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 2 (entier)
DEBUG [main] - DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - Connexion renvoyée 873769339 au pool.

 

八、Mybatis与ehcache整合

8.1、把jar包导入项目

Premiers pas avec MyBatis (5) --- Chargement et mise en cache retardés

8.2、建立ehcache.xml

ehcache.xml

 

   xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
   
           maxElementsInMemory="1000"
       maxElementsOnDisk="10000000"
       eternal="false "
       overflowToDisk=" false"
       timeToIdleSeconds="120"
       timeToLiveSeconds="120"
       diskExpiryThreadIntervalSeconds="120"
       memoryStoreEvictionPolicy="LRU">
   

 

 

 

8.3、在mapper的cache中指定type

 

type指定为ehcachecache类开
在ehcache和mybatis的整合包中 -->

 

 

 

8.4、测试

 

@Test public void testCache() { // Obtenez la fabrique de sessions
SqlSession sqlSession1 = sqlSessionFactory.openSession();
AuthorMapper1 = sqlSession1.getMapper(AuthorMa pper.class); > AuthorMapper1.findAuthorById(2); //Doit être fermé, aucune donnée ne peut être écrite dans la zone de cache sqlSession1.close(); //Obtenir la fabrique de session
SqlSession sqlSession2 = sqlSes sionFactory.openSession();
AuthorMapper authorMapper2 = sqlSession2.getMapper(AuthorMapper.class);
Author author2 = authorMapper2.findAuthorById(2); //Mise à jour
author2.setAuthorUserName("Chairman");
author2.setA uthroBio(" Company" );
authorMapper2.updateAuthor(author2); //commit effacera la zone de cache sqlSession2.commit();
sqlSession2.close(); // Obtient la fabrique de sessions
S qlSession sqlSession3 = sqlSessionFactory.openSession() ;
AuthorMapper3 = sqlSession3.getMapper(AuthorMapper.class); // Première requête
AuthorMapper3 = authorMapper3.findAuthorById(2);
sqlSession3.close();
}

Résultat :

DEBUG [main] - Configuration d'ehcache à partir de ehcache.xml trouvé dans le chemin de classe : file:/E:/mywork/MybatisDemo2/bin/ehcache.xml
DEBUG [main] - Configuration d'ehcache à partir de l'URL : file:/ E:/mywork/MybatisDemo2/bin/ehcache.xml
DEBUG [main] - Configuration d'ehcache à partir d'InputStream
DEBUG [main] - Ignorer l'attribut ehcache xmlns:xsi
DEBUG [main] - Ignorer l'attribut ehcache xsi :noNamespaceSchemaLocation
DEBUG [main] - Chemin du magasin de disques : F:developehcache
DEBUG [main] - Création d'un nouveau CacheManager avec la configuration par défaut
DEBUG [main] - PropertiesString est null.
DEBUG [main] - Aucune classe CacheManagerEventListenerFactory spécifiée. Sauter...
DEBUG [main] - Aucune classe BootstrapCacheLoaderFactory spécifiée. Sauter...
DEBUG [main] - Usine CacheWriter non configurée. Sauter...
DEBUG [main] - Aucune classe CacheExceptionHandlerFactory spécifiée. Sauter...
DEBUG [main] - Net.sf.ehcache.store.NotifyingMemoryStore initialisé pour com.pb.mybatis.mapper.AuthorMapper
DEBUG [main] - Cache initialisé : com.pb.mybatis.mapper .AuthorMapper
DEBUG [main] - CacheDecoratorFactory non configuré pour defaultCache. Ignorer 'com.pb.mybatis.mapper.AuthorMapper'.
DEBUG [main] - Taux de réussite du cache [com.pb.mybatis.mapper.AuthorMapper] : 0.0DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion créée 1286943672.
DEBUG [main] - Définition de la validation automatique sur false sur la connexion JDBC [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 2(Integer)
DEBUG [main] - DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] - Connexion renvoyée 1286943672 au pool.
DEBUG [main] - Taux de réussite du cache [com.pb.mybatis.mapper.AuthorMapper ] : 0.5DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion extraite 1286943672 du pool.
DEBUG [main] - Définition de la validation automatique sur false sur la connexion JDBC [com.mysql.jdbc.JDBC4Connection@ 4cb533b8]
DEBUG [principal] - ==>  Préparation : mise à jour de l'auteur SET author_username=?, author_password=?, author_email=?, author_bio=?, register_time=? où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 董事长(String), 123asf(String), lisi@163.com(String), 公司(String), 2015-10-29 10:24:29.0(Timestamp), 2(Integer)
DEBUG [ main] - DEBUG [main] - Réinitialisation de la validation automatique sur true sur la connexion JDBC [com.mysql.jdbc. JDBC4Connection@4cb533b8]
DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] - Connexion renvoyée 1286943672 au pool.
DEBUG [main] - Cache Hit Ratio [com.pb.mybatis.mapper.AuthorMapper] : 0,3333333333333333DEBUG [main] - Ouverture de la connexion JDBC
DEBUG [main] - Connexion extraite 1286943672 du pool.
DEBUG [main] - Définition de la validation automatique sur false sur Connexion JDBC [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [principal] - ==>  Préparation : sélectionnez * de l'auteur où author_id=? DÉBOGAGE [principal] - ==> Paramètres : 2(Integer)
DEBUG [main] - DEBUG [main] - Fermeture de la connexion JDBC [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] - Connexion renvoyée 1286943672 au pool.

 以上就是MyBatis入门(五)---延时加载、缓存的内容,更多相关内容请关注PHP中文网(www.php.cn)! 


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn