Heim >Java >javaLernprogramm >Erste Schritte mit MyBatis (5) --- Verzögertes Laden und Zwischenspeichern

Erste Schritte mit MyBatis (5) --- Verzögertes Laden und Zwischenspeichern

黄舟
黄舟Original
2016-12-21 14:34:161339Durchsuche

1. Datenbank erstellen

1.1. Datenbank erstellen


/*SQLyog EnterPRise v12.09 (64 Bit)MySQL - 5.7.9-log: Datenbank - mybatis
************************* **********************************************// *!40101 SET NAMES 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 CHARACTER SET utf8 */;USE `mybatis`;/*Table structure for 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) NOT NULL COMMENT '作者密码',
 `author_email` varchar(50) NOT NULL COMMENT '作者邮箱',
 `author_bio` varchar(1000) DEFAULT '这家伙很赖,什么也没留下' COM MENT '作者简介',
 `register_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',  PRIMARY KEY (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;/*Daten für die Tabelle „Autor“. ` */insert  in `author`(`author_id`,`author_username`,`author_password`,`author_email`,`author_bio`,`register_time`) Werte (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');/*Tabellenstruktur für Tabelle `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外键',  PRIMARY KEY (`blog_id`),  KEY `fk_author_id` (`author_id`),  CONSTRAINT `fk_author_id` FOREIGN KEY (`author_id`) REFERENCES `author` (`author_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;/*Daten für die Tabelle „Blog“ */Insert  in „Blog“(`Blog_ID`,`Blog_Titel`,`Autor_ID`) Werte (1,'小张的Blog',1) ,(2,'小李',2),(3,'王五不是人',3),(4,'赵地人',4),(5,'钱钱钱',5);/ *Tabellenstruktur für Tabelle „Beiträge“ */DROP TABLE IF EXISTS „Beiträge“;CREATE TABLE „Beiträge“ (
 `post_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章主键ID',
 `post_subject ` varchar(255) NOT NULL COMMENT 'Blog主键做外键',
 `createtime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '文章创建时间',  PRIMARY KEY (`post_id`),  KEY `fk_blog_id` (`blog_id`),  CONSTRAINT `fk_blog_id` FOREIGN. SCHLÜSSEL (`blog_id` ) REFERENZEN `blog` (`blog_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;/*Daten für die Tabelle „posts“ */in „posts“(„post_id“, „post_subject“, „post_body“, „blog_id“, „createtime“) einfügen (1, „Einführung in Mybatis 1“, „Was ist MyBatis? rnMyBatis ist ein hervorragendes Persistenzschicht-Framework, das benutzerdefiniertes SQL, gespeicherte Prozeduren und erweiterte Zuordnung unterstützt. MyBatis vermeidet fast den gesamten JDBC-Code und das manuelle Festlegen von Parametern und das Erhalten von Ergebnissätzen. MyBatis kann einfache XML- oder Anmerkungen für die Konfiguration und native Karten verwenden, um Schnittstellen und Java-POJOs (einfache alte Java-Objekte, gewöhnliche Java-Objekte) in Datensätze in der Datenbank abzubilden. ,(2,'Einführung in Mybatis 2','Um MyBatis zu verwenden, platzieren Sie einfach die Datei mybatis-x.x.x.jar im Klassenpfad.',1,'2015-10-29 10:32:52 '),(3,' Oracle Learning“, „Oracle Database, auch bekannt als Oracle RDBMS oder kurz Oracle. Es ist ein relationales Datenbankverwaltungssystem der Oracle Company“,2, „2015-10-29 10:33:26“ ,(4, 'JAVA Learning 1','Java ist der allgemeine Name der objektorientierten Java-Programmiersprache und Java-Plattform, die im Mai 1995 von Sun Microsystems eingeführt wurde',3,'29.10.2015 10:34:17'),(5 ,'PL/SQL','PL/SQL ist auch eine Programmiersprache namens Procedural Language/SQL ist eine Erweiterung der Oracle-Datenbank für SQL-Anweisungen',4, '29.10.2015 10:37:52'. ),(6,'CSS-Tag-Selektor','Tag-SelektorrnID-SelektorrnKlassen-SelektorrnSpezial-Selektor',5,'2015-10-29 10 :39:44'),(7,'javascript','js: ist ein Frontend Skriptsprache',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 */;

Datentabellen und Daten

2. Erstellen Sie ein Projekt


3. Erstellen Sie ein Projekt

3.1, 3 Entitätsklassen

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

*


* @ClassName: Autor

* @Description: TODO(Autor)

* @Autor Liu Nan

* @Datum 2015 -31.10. 12:39:33 Uhr

**/public class Author { //Autoren-ID
private Integer authorId; //Autorenname
private String authorUserName; //Autoren-Passwort
private String authorEmail; 🎜> private String authroBio; //Registrierungszeit
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 String getAuthroBio() { return authroBio;
} public void setAuthroBio(String authroBio) { this.authroB io = authroBio;
} public Date getRegisterTime() {       return registerTime;
  }     public void setRegisterTime (Datum registerTime) {         this.registerTime = registerTime; + AuthorId + ", AuthorUserName=" + AuthorUserName + ", AuthorPassword=" + AuthorPassword + " 🎜 > }







package com.pb.mybatis.po;import java.util.List;public class Blog {    
   //Blog,ID
   private Integer blogId;    //Blog 名称标题
   private String blogTitle;    //外键authorId    //作者
   privater Autor Autor;    //文章 列表
   private Integer authorId;    
   //文章列表
   private Liste BeiträgeListe;    
   
   public Integer getBlogId() {        return blogId;
   }    public void setBlogId(Integer blogId) {        this.blogId = blogId;
   }    public String getBlogTitle() {       return blogTitle;
   } public void setBlogTitle(String blogTitle) {        this.blogTitle = blogTitle;
   }    public Author getAuthor() {        return author;
   }    public void setAuthor(Author author) {        this.author = author;
   }   öffentlich 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;
   }
   
   
   @Override   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 Ganzzahl postId;    //文章标题
   private String postTitle;    //文章主体内容
   private String postBody;    
   //外键
   private Integer blogId;    //建立时间
   private Date createTime;    
   
   public Integer getPostId() {        return postId;
   }    public void setPostId(Integer postId) {        this.postId = postId;
   }    public String getPostTitle() {       return postTitle;
   } public void setPostTitle(String postTitle) {        this.postTitle = postTitle;
   }    public String getPostBody() {        return postBody;
   }    public void setPostBody(String postBody) {        this.postBody = postBody;
   }    öffentlich Date getCreateTime() {        return createTime;
   }    public void setCreateTime(Date createTime) {        this.createTime = createTime;
   }    
   
   public Integer getBlogId() {        re blogId;
   }    öffentlich machen void setBlogId(Integer blogId) {        this.blogId = blogId;
   }
   @Override    public String toString() {        return "Beiträge [postId=" + postId + ", postTitle=" + postTitle              ody= " + postbody +", createTime = " + createTime +", blogid = " + blogid +"] ";


 

 

 

3.2、3个接口

 

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

* @Title: findAuthorById

* @Description: TODO (Suche nach ID)

* @param @param id
* @param @ return Setting file

* @return Author Rückgabetyp

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

 

Paket com.pb.mybatis.mapper;import com.pb.mybatis.po.Blog;öffentliche Schnittstelle BlogMapper {    
   /**
*

* @Title: findBlogById

* @Description: TODO (BLOG basierend auf BLOGID finden, Autor zuordnen und verzögertes Laden mit Beiträgen implementieren)

* @param @param id
* @param @return Einstellungsdatei

* @return Blog Rückgabetyp

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

}

 

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

* @Title: findPostsByBlogId

* @Description: TODO (Beitragsliste basierend auf BLOGID finden)

* @param @param blogId
* @ param @return Einstellungsdatei

* @return List Rückgabetyp

* @throws
*/
   public List findPostsByBlogId(int blogId);
}

 

 

 

 

四、建立mapper.xml与conguration.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" columns="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">

4.2, Configuration.xml

db.properties

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

Verzögertes Laden aktivieren und sofortiges Laden ausschalten







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


< ;!--Datenquelle -->







5.1

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

   @Before    public void setUp() throws Exception {
       String config="configuration.xml";
       InputStream s. getResourceAsStream(config);
       sqlSessionFactory=new SqlSessionFactoryBuilder().build(resource);
   }    /**
*

* @Title: testFindBlogs

* @Description: TODO (verzögertes Laden)

* @param Einstellungsdatei

* @return void Rückgabetyp

* @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("===========开始延时加载文章===========");
       List< ;Beiträge> list=blog.getPostsList();        /*int count=0;
       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 [main] - ==>  Vorbereitung: SELECT * FROM blog WHERE blog_id=? DEBUG [main] - ==> Parameter: 1(Ganzzahl)
DEBUG [main] - 1...小张的Blog===========开始延时加载作者Author= ==========DEBUG [main] - ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 1(Integer)
DEBUG [main] -  Vorbereitung: Wählen Sie * aus Beiträgen aus, bei denen blog_id=? DEBUG [main] - ==> Parameter: 1(Ganzzahl)
DEBUG [main] -

 

六、一级缓存

6.1、mybatis一级缓存

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

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

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

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

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

Erste Schritte mit MyBatis (5) --- Verzögertes Laden und Zwischenspeichern

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

 

6.2、还是上级的例子

测试:查询用户

 

 

Paket com.pb.mybatis.mapper;import static org.junit.Assert.*;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession ;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import com.pb.mybatis.po.Author;public class AuthorMapperTest {    private SqlSessionFactory sqlSessionFactory;

   @Before    public void setUp() throws Exception {
       String config="configuration.xml";
       InputStream resources=Resources.getResourceAsStream(config);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(resource);
   }

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

}

 

 

 

结果:

 

DEBUG [main] - ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 2(Integer)
DEBUG [main] - Autor [authorId=2, authorUserName=李四, authorPassword=123asf, authorEmail=lisi@163.com, authroBio=魂牵梦萦 , registerTime=Do 29. Okt. 10:24:29 CST 2015]
DEBUG [main] - ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 4(Integer)
DEBUG [main] -

 

 

 

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

接口中做添加方法

 

/**
*

* @Title: addAuthor

* @Description: TODO(Add)

* @param @param author
* @param @return Set Definierte Datei

* @return int Rückgabetyp

* @throws
*/
   public int addAuthor(Autor Autor);

 

 

 

mapper.xml中做同样的select

 

< ; Einstellung name="aggressiveLazyLoading" value="false"/>> ;

2. Mapper passt die Pojo-Klasse an, um die Serialisierung zu implementieren

Erste Schritte mit MyBatis (5) --- Verzögertes Laden und Zwischenspeichern

3 Aktivieren Sie den Second-Level-Cache AuthorMapper


7.3. Test

@Test public void testCache() { // Holen Sie sich die Sitzungsfabrik
SqlSession sqlSession1 = sqlSessionFactory .openSession () ;
AuthorMapper1 = sqlSession1.getMapper(AuthorMapper.class); // Erste Abfrage
AuthorMapper1 = authorMapper1.findAuthorById(2); //Muss ausgeschaltet sein, es können keine Daten in den Cache-Bereich geschrieben werden qlSession1.close( ; sqlSession2.close();*/
// Holen Sie sich die Sitzungsfabrik
SqlSession sqlSession3 = sqlSessionFactory.openSession();
AuthorMapper authorMapper3 = sqlSession3.getMapper(AuthorMapper.class); / / Erste Abfrage
Autor author3 = authorMapper3.findAuthorById(2) ;
sqlSession3.close();
}



DEBUG [main] – Cache Trefferquote [com.pb.mybatis.mapper.AuthorMapper]: 0,0 DEBUG [main] – JDBC-Verbindung öffnen

DEBUG [main] – Verbindung 873769339 erstellt.

DEBUG [main] – Autocommit bei JDBC-Verbindung auf „false“ setzen [com.mysql.jdbc.JDBC4Connection@3414a97b]

DEBUG [main] - ==> Vorbereiten: select * from author where author_id=? DEBUG [main] - ==> Parameter: 2(Integer)
DEBUG [main] – DEBUG [main] – JDBC-Verbindung schließen [com.mysql .jdbc.JDBC4Connection@3414a97b]
DEBUG [main] – Verbindung 873769339 zum Pool zurückgegeben.
DEBUG [main] – Cache-Trefferquote [com.pb.mybatis.mapper.AuthorMapper]: 0,5


Commit-Vorgang in der Mitte hinzufügen

@ Test public void testCache() { // Sitzungsfabrik abrufen

SqlSession sqlSession1 = sqlSessionFactory.openSession();

AuthorMapper1 = sqlSession1.getMapper (AuthorMapper.class); // Erste Abfrage

Autor author1 = authorMapper1.findAuthorById(2); //Muss geschlossen werden, da Daten nicht in den Cache-Bereich geschrieben werden können (AuthorMapper.class);
Author2 =authorMapper2.findAuthorById(2); //Update
author2.setAuthorUserName("Chairman");
author2.setAuthroBio("Company");
authorMapper2. updateAuthor(author2); //commit löscht den Cache-Bereich sqlSession2.commit();
sqlSession2.close(); // Holen Sie sich die Sitzungsfabrik
SqlSession s qlSession3 = sqlSessionFactory.openSession();
AuthorMapper authorMapper3 = sqlSession3.getMapper(AuthorMapper.class); // Erste Abfrage
AuthorMapper3 = authorMapper3.findAuthorById(2);
sqlSession3.close();
}


Ergebnis:

DEBUG [main] – Cache-Trefferquote [com.pb.mybatis.mapper.AuthorMapper]: 0,0DEBUG [main] – JDBC-Verbindung öffnen
DEBUG [main] – Verbindung 873769339 erstellt.
DEBUG [main ] – Autocommit bei JDBC-Verbindung auf „false“ setzen [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] – ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 2(Ganzzahl)
DEBUG [main] – DEBUG [main] – Schließen der JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] – Verbindung 873769339 zum Pool zurückgegeben.
DEBUG [main] – Cache-Trefferquote [com.pb.mybatis.mapper.AuthorMapper ]: 0.5DEBUG [main] – JDBC-Verbindung öffnen
DEBUG [main] – Verbindung 873769339 aus dem Pool ausgecheckt.
DEBUG [main] – Autocommit für JDBC-Verbindung auf „false“ setzen [com.mysql.jdbc.JDBC4Connection@ 3414a97b]
DEBUG [main] - ==>  Vorbereitung: Autor aktualisieren SET author_username=?,author_password=?,author_email=?,author_bio=?,register_time=? wo author_id=? DEBUG [main] - ==> Parameter: 董事长(String), 123asf(String), lisi@163.com(String), 公司(String), 2015-10-29 10:24:29.0(Timestamp), 2(Integer)
DEBUG [ main] – DEBUG [main] – Autocommit für JDBC-Verbindung auf „true“ zurücksetzen [com.mysql.jdbc. JDBC4Connection@3414a97b]
DEBUG [main] – JDBC-Verbindung schließen [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] – Verbindung 873769339 zum Pool zurückgegeben.
DEBUG [main] – Cache-Treffer Verhältnis [com.pb.mybatis.mapper.AuthorMapper]: 0,3333333333333333DEBUG [main] – JDBC-Verbindung öffnen
DEBUG [main] – Verbindung 873769339 aus dem Pool ausgecheckt.
DEBUG [main] – Autocommit auf „false“ setzen JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 2(Ganzzahl)
DEBUG [main] – DEBUG [main] - Schließen der JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@3414a97b]
DEBUG [main] - Verbindung 873769339 zum Pool zurückgegeben.

 

八、Mybatis与ehcache整合

8.1、把jar包导入项目

Erste Schritte mit MyBatis (5) --- Verzögertes Laden und Zwischenspeichern

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() { // Holen Sie sich die Sitzungsfabrik
SqlSession sqlSession1 = sqlSessionFactory.openSession();
AuthorMapper1 = sqlSession1.getMapper(AuthorMapper.class); // Erste Abfrage
AuthorMapper1.findAuthorById(2); //Muss geschlossen sein, es können keine Daten in den Cache-Bereich geschrieben werden sqlSession1.close(); //Sitzungsfabrik abrufen
SqlSession sqlSession2 = sqlSes sionFactory.openSession();
AuthorMapper authorMapper2 = sqlSession2.getMapper(AuthorMapper.class);
Author author2 = authorMapper2.findAuthorById(2); //Update
author2.setAuthorUserName("Chairman");
author2.setA uthroBio(" Company" );
authorMapper2.updateAuthor(author2); //commit löscht den Cache-Bereich sqlSession2.commit();
sqlSession2.close(); // Holen Sie sich die Sitzungsfabrik
S qlSession sqlSession3 = sqlSessionFactory.openSession() ;
AuthorMapper3 = sqlSession3.getMapper(AuthorMapper.class); // Erste Abfrage
AuthorMapper3 = authorMapper3.findAuthorById(2);
sqlSession3.close();
}

Ergebnis:

DEBUG [main] – Konfigurieren von ehcache aus ehcache.xml im Klassenpfad: file:/E:/mywork/MybatisDemo2/bin/ehcache.xml
DEBUG [main] – Konfigurieren von ehcache aus URL: file:/ E:/mywork/MybatisDemo2/bin/ehcache.xml
DEBUG [main] – Ehcache aus InputStream konfigurieren
DEBUG [main] – Ehcache-Attribut xmlns:xsi ignorieren
DEBUG [main] – Ehcache-Attribut xsi ignorieren :noNamespaceSchemaLocation
DEBUG [main] – Festplattenspeicherpfad: F:developehcache
DEBUG [main] – Neuen CacheManager mit Standardkonfiguration erstellen
DEBUG [main] – PropertiesString ist null.
DEBUG [main] – Keine CacheManagerEventListenerFactory-Klasse angegeben. Überspringen...
DEBUG [main] – Keine BootstrapCacheLoaderFactory-Klasse angegeben. Überspringen...
DEBUG [main] – CacheWriter-Fabrik nicht konfiguriert. Überspringen...
DEBUG [main] – Keine CacheExceptionHandlerFactory-Klasse angegeben. Überspringen...
DEBUG [main] – Net.sf.ehcache.store.NotifyingMemoryStore für com.pb.mybatis.mapper.AuthorMapper initialisiert
DEBUG [main] – Cache initialisiert: com.pb.mybatis.mapper .AuthorMapper
DEBUG [main] – CacheDecoratorFactory nicht für defaultCache konfiguriert. Überspringen für „com.pb.mybatis.mapper.AuthorMapper“.
DEBUG [main] – Cache-Trefferquote [com.pb.mybatis.mapper.AuthorMapper]: 0,0DEBUG [main] – Öffnen der JDBC-Verbindung
DEBUG [main] – Verbindung 1286943672 erstellt.
DEBUG [main] – Autocommit für JDBC-Verbindung auf „false“ setzen [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] – ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 2(Ganzzahl)
DEBUG [main] – DEBUG [main] – Schließen der JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] – Verbindung 1286943672 zum Pool zurückgegeben.
DEBUG [main] – Cache-Trefferquote [com.pb.mybatis.mapper.AuthorMapper ]: 0.5DEBUG [main] – JDBC-Verbindung öffnen
DEBUG [main] – Verbindung 1286943672 aus dem Pool ausgecheckt.
DEBUG [main] – Autocommit für JDBC-Verbindung auf „false“ setzen [com.mysql.jdbc.JDBC4Connection@ 4cb533b8]
DEBUG [main] - ==>  Vorbereitung: Autor aktualisieren SET author_username=?,author_password=?,author_email=?,author_bio=?,register_time=? wo author_id=? DEBUG [main] - ==> Parameter: 董事长(String), 123asf(String), lisi@163.com(String), 公司(String), 2015-10-29 10:24:29.0(Timestamp), 2(Integer)
DEBUG [ main] – DEBUG [main] – Autocommit für JDBC-Verbindung auf „true“ zurücksetzen [com.mysql.jdbc. JDBC4Connection@4cb533b8]
DEBUG [main] – JDBC-Verbindung schließen [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] – Verbindung 1286943672 zum Pool zurückgegeben.
DEBUG [main] – Cache-Treffer Verhältnis [com.pb.mybatis.mapper.AuthorMapper]: 0,3333333333333333DEBUG [main] – JDBC-Verbindung öffnen
DEBUG [main] – Verbindung 1286943672 aus dem Pool ausgecheckt.
DEBUG [main] – Autocommit auf „false“ setzen JDBC-Verbindung [com.mysql.jdbc.JDBC4Connection@4cb533b8]
DEBUG [main] - ==>  Vorbereitung: Wählen Sie * vom Autor aus, wobei author_id=? DEBUG [main] - ==> Parameter: 2(Ganzzahl)
DEBUG [main] – DEBUG [main] -Schließen der JDBC-Verbindung [com.mysql.jdbc.jdbc4connection@4cb533b8]
Debug [Main]-zurückgegebene Verbindung 1286943672 an den Pool.加载、缓存的内容,更多相关内容请关注PHP中文网(www.php.cn)! 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn