栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java第三阶段第五天--CureGuy

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java第三阶段第五天--CureGuy

目录

1 、mybatis高级用法

1.1 、一对一案例

1.2 、关联查询和子查询的说明

1.3 、子查询实现一对一封装

1.4 、一对多案例

1.5 、驼峰规则映射

1.6 、Mybatis缓存机制

1 、mybatis高级用法

1.1 、一对一案例

注意事项:mybatis在实现数据封装时,要求字段名称唯一

SELECt * FROM emp
	LEFT JOIN 
	     dept 
	ON emp.dept_id=dept.dept_id
	

SELECt * FROM emp ,dept 
	WHERe dept.dept_id =emp.dept_id


SELECt e.id,e.name,e.age,d.dept_id,d.dept_name
	FROM emp e,dept d
	WHERe e.dept_id=d.dept_id

最后查询得到的结果:

 EmpMapper.xml

    
        select e.id,e.name,e.age,d.dept_id,d.dept_name
        from emp e,dept d
        where e.dept_id = d.dept_id
    

    
        



        
            
            
        
    

DeptMapper.xml

    
    
        select * from emp
    

    
        
        
    
    
        SELECT e.id,e.name,e.age,d.dept_id,d.dept_name
	FROM
	emp e  LEFT JOIN dept d
	ON e.dept_id = d.dept_id
    

    
    
    

        
            
        
    

1.5 、驼峰规则映射

说明:mybatis在映射时经常出现字段名称与属性名称不一致的现象,其中一部分可以采用驼峰规则的方式完成自动映射。

编辑mybatis-config.xml文件(写在configuration标签下)

    

        
    

最好留有id的标签 方便以后调用id会用到 

    
    


            
        
    

1.6 、Mybatis缓存机制

缓存机制:缓存是用来解决查询数据的问题

说明:引入缓存可以有效降低用户访问物理设备的频次,提高用户响应速度

扩展: 

        1.Mybatis自身缓存:一级缓存/二级缓存

        2.Redis缓存 读取10w次/秒,写8s/一次(没看清后面再改)

一级缓存:Mybatis默认开启一级缓存,一级缓存可以在同一个SqlSession对象中查询相同的数据,可以实现数据的共享(缓存操作)

//mybatis 一级缓存  默认开启 同一个SQLSession对象内部有效
    @Test
    public void cache1(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        List list1=deptMapper.findAll();
        List list2=deptMapper.findAll();
        List list3=deptMapper.findAll();
        System.out.println(list1==list2);
        sqlSession.close();
    }
    //mybatis 一级缓存在不同SQLSession中无效
    @Test
    public void cache2(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        deptMapper.findAll();
        SqlSession sqlSession1=sqlSessionFactory.openSession();
        DeptMapper deptMapper1=sqlSession1.getMapper(DeptMapper.class);
        deptMapper1.findAll();
        sqlSession.close();
        sqlSession1.close();
    }

二级缓存:mybatis中默认是开启的,但是需要手动标识一下,二级缓存可以在同一个SQLSession内部有效。

全局配置:cacheEnabled全局性的开启或关闭所有映射文件中已配置的任何缓存

默认情况下只启动了本地的会话缓存,它仅仅对一个会话的数据进行缓存,要启用全局的二级缓存,只需要在SQL映射文件中添加一行代码即可。

    
    @Test
    public void cache2(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        deptMapper.findAll();
        //关闭一级缓存
        sqlSession.close();
        SqlSession sqlSession1=sqlSessionFactory.openSession();
        DeptMapper deptMapper1=sqlSession1.getMapper(DeptMapper.class);
        deptMapper1.findAll();
        sqlSession1.close();
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号