多对多 二级缓存

来源:互联网 发布:php extension dir 编辑:程序博客网 时间:2024/05/01 01:55
实体层public class student {    private  Integer sid;    private String sname
public class teacher {    private  Integer tid;    private String tname;    private List<student> getStudent=new ArrayList<student>();
public interface ITeacherDAO {    public teacher getSrtudentById(int tid);}
小配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.happy.DAO.ITeacherDAO">    <resultMap id="teacherMapper"  type="cn.happy.entity.teacher">        <id column="tid" property="tid"></id>        <result column="tname" property="tname"/>        <collection property="getStudent" ofType="cn.happy.entity.student">            <id  column="sid" property="sid"></id>            <result column="sname" property="sname"/>        </collection>    </resultMap>    <select id="getSrtudentById" resultMap="teacherMapper">        SELECT student.sid,sname,teacher.tid,tname            from student,teacher_student,teacher            where student.sid=teacher_student.sid            AND teacher.tid=teacher_student.tid            AND teacher.tid=#{tid}</select></mapper>
单侧
//多对多 @Test public void test() {     SqlSession session=myBatis.getSqlSession();     ITeacherDAO dao=session.getMapper(ITeacherDAO.class);teacher tee=dao.getSrtudentById(1);     System.out.println(tee.getTname());     for (student stu:tee.getGetStudent())     {         System.out.println(stu.getSname());     } }
//增删改对一级缓存的影响@Testpublic void testUpdate(){    SqlSession session=myBatis.getSqlSession();    IStudentInfoDAO dao = session.getMapper(IStudentInfoDAO.class);    studentinfo stu=dao.getStudentById(2);    System.out.println(stu.getStuName());    studentinfo s1=new studentinfo();    s1.setStuAge(20);    s1.setStuName("栋哥");    s1.setStuDate(new Date());    dao.addStudent(s1);    System.out.println("==========栋 哥哥二进宫");    studentinfo stu2=dao.getStudentById(2);    System.out.println(stu2.getStuName());}

增删改对一级缓存的影响

控制台打印

E:\JDK\jdk1.8.0_45\bin\java -ea -Didea.launcher.port=7534 "-Didea.launcher.bin.path=E:\ideaquan\IntelliJ IDEA 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "E:\ideaquan\IntelliJ IDEA 2016.3.2\lib\idea_rt.jar;E:\ideaquan\IntelliJ IDEA 2016.3.2\plugins\junit\lib\junit-rt.jar;E:\JDK\jdk1.8.0_45\jre\lib\charsets.jar;E:\JDK\jdk1.8.0_45\jre\lib\deploy.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\access-bridge-32.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\cldrdata.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\dnsns.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\jaccess.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\jfxrt.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\localedata.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\nashorn.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunec.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunjce_provider.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunmscapi.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunpkcs11.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\zipfs.jar;E:\JDK\jdk1.8.0_45\jre\lib\javaws.jar;E:\JDK\jdk1.8.0_45\jre\lib\jce.jar;E:\JDK\jdk1.8.0_45\jre\lib\jfr.jar;E:\JDK\jdk1.8.0_45\jre\lib\jfxswt.jar;E:\JDK\jdk1.8.0_45\jre\lib\jsse.jar;E:\JDK\jdk1.8.0_45\jre\lib\management-agent.jar;E:\JDK\jdk1.8.0_45\jre\lib\plugin.jar;E:\JDK\jdk1.8.0_45\jre\lib\resources.jar;E:\JDK\jdk1.8.0_45\jre\lib\rt.jar;E:\Y2165\01MyBatis\target\test-classes;E:\Y2165\01MyBatis\target\classes;C:\Users\Administrator\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\Administrator\.m2\repository\org\mybatis\mybatis\3.2.2\mybatis-3.2.2.jar;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar;C:\Users\Administrator\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 cn.happy.test.MyBatisTest01,testUpdate
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
18:30:47,613 DEBUG getStudentById:132 - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1fbf16f]
18:30:47,616 DEBUG getStudentById:132 - ==>  Preparing: select * from studentinfo WHERE stuid=?
18:30:47,667 DEBUG getStudentById:132 - ==> Parameters: 2(Integer)
星星
18:30:47,688 DEBUG addStudent:132 - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1fbf16f]
18:30:47,689 DEBUG addStudent:132 - ==>  Preparing: INSERT INTO studentinfo(stuName,stuAge,stuDate) VALUE (?,?,?)
18:30:47,696 DEBUG addStudent:132 - ==> Parameters: 栋哥(String), 20(Integer), 2017-07-16 18:30:47.688(Timestamp)
==========栋 哥哥二进宫
18:30:47,698 DEBUG getStudentById:132 - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1fbf16f]
18:30:47,698 DEBUG getStudentById:132 - ==>  Preparing: select * from studentinfo WHERE stuid=?
18:30:47,698 DEBUG getStudentById:132 - ==> Parameters: 2(Integer)
星星

Process finished with exit code 0



二级缓存的三部曲

第一步
public class studentinfo implements Serializable{
第二部
小配置里面
 加这个         <cache/>

<mapper namespace="cn.happy.DAO.IStudentInfoDAO">    <cache/>
第三部
大配置里面
<configuration><!-- 根节点 -->    <settings >        <setting name="cacheEnabled" value="true"/>    </settings>
二级缓存代码
//02.根据学生学号查询特定学生对象public studentinfo getStudentById(int stuid);

小配置
<select id="getStudentById" resultType="cn.happy.entity.studentinfo">    select * from studentinfo WHERE stuid=#{stuId}</select>

二级缓存单侧
@Testpublic void testUpdate(){    SqlSession session=myBatis.getSqlSession();    IStudentInfoDAO dao = session.getMapper(IStudentInfoDAO.class);    studentinfo stu=dao.getStudentById(2);    System.out.println(stu.getStuName());    session.close();    SqlSession session2=myBatis.getSqlSession();    IStudentInfoDAO dao2 = session2.getMapper(IStudentInfoDAO.class);    System.out.println("==========栋 哥哥二进宫");    studentinfo stu2=dao2.getStudentById(2);    System.out.println(stu2.getStuName());}


二级缓存的运行控制台
E:\JDK\jdk1.8.0_45\bin\java -ea -Didea.launcher.port=7537 "-Didea.launcher.bin.path=E:\ideaquan\IntelliJ IDEA 2016.3.2\bin" -Dfile.encoding=UTF-8 -classpath "E:\ideaquan\IntelliJ IDEA 2016.3.2\lib\idea_rt.jar;E:\ideaquan\IntelliJ IDEA 2016.3.2\plugins\junit\lib\junit-rt.jar;E:\JDK\jdk1.8.0_45\jre\lib\charsets.jar;E:\JDK\jdk1.8.0_45\jre\lib\deploy.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\access-bridge-32.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\cldrdata.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\dnsns.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\jaccess.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\jfxrt.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\localedata.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\nashorn.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunec.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunjce_provider.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunmscapi.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\sunpkcs11.jar;E:\JDK\jdk1.8.0_45\jre\lib\ext\zipfs.jar;E:\JDK\jdk1.8.0_45\jre\lib\javaws.jar;E:\JDK\jdk1.8.0_45\jre\lib\jce.jar;E:\JDK\jdk1.8.0_45\jre\lib\jfr.jar;E:\JDK\jdk1.8.0_45\jre\lib\jfxswt.jar;E:\JDK\jdk1.8.0_45\jre\lib\jsse.jar;E:\JDK\jdk1.8.0_45\jre\lib\management-agent.jar;E:\JDK\jdk1.8.0_45\jre\lib\plugin.jar;E:\JDK\jdk1.8.0_45\jre\lib\resources.jar;E:\JDK\jdk1.8.0_45\jre\lib\rt.jar;E:\Y2165\01MyBatis\target\test-classes;E:\Y2165\01MyBatis\target\classes;C:\Users\Administrator\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\Administrator\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\Administrator\.m2\repository\org\mybatis\mybatis\3.2.2\mybatis-3.2.2.jar;C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar;C:\Users\Administrator\.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 cn.happy.test.MyBatisTest01,testUpdate
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
18:40:28,635 DEBUG getStudentById:132 - ooo Using Connection [com.mysql.jdbc.JDBC4Connection@1fbf16f]
18:40:28,638 DEBUG getStudentById:132 - ==>  Preparing: select * from studentinfo WHERE stuid=?
18:40:28,690 DEBUG getStudentById:132 - ==> Parameters: 2(Integer)
星星
==========栋 哥哥二进宫
星星

Process finished with exit code 0




原创粉丝点击