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

【mybatis】mybatis基础知识总结

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

【mybatis】mybatis基础知识总结

1._MyBatis是什么

MyBatis是一个优秀的基于java的持久层框架,它内部封装了JDBC,解决了sql语句不易维护的问题,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

MyBatis通过XML或注解的方式将要执行的各种statement配置起来,并通过JAVA对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句。

最后MyBatis框架执行SQL并将结果映射为Java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了JDBC API底层访问细节,使我们不用与JDBC API打交道,就可以完成对数据库的持久化操作

简单说就是:有一种叫MyBatis的持久层技术,能够代替JDBC,简化JDBC开发。

具体技术:

  • Hibernate
  • MyBatis

项目搭建

2._ORM

对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用“虚拟对象数据库”。

简单的说:就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。

数据库实体类
user表User类
id列id属性
username列userName属性
age列age属性
3._解决包下的UserMapper.xml不会编译(报错)

出现该问题的原因是因为UserMapper.xml作为一个配置文件应该放在java目录下,如果不做特殊配置Maven不会对其进行编译,Maven只会编译java目录下的.java文件。针对这个问题,有两种解决方案:

  1. 在resources目录下新建目录com/qfedu/mapper,将UserMapper.xml剪切到该目录下;
  2. 在pom.xml配置java目录下的xml文件为资源文件,让Maven能够识别,从而进行编译。

我们一般在项目开发中,采用第二种方案进行处理,pom.xml中的新增配置如下:


    
        
            src/main/java
            
                 
                **
@Test
public void testLevel1() throws IOException {
    //加载配置文件
    InputStream in = Resources.getResourceAsStream("mybatis_config.xml");
    //创建Session工厂
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
    //获取session
    SqlSession session = factory.openSession();

    UsersMapper usersMapper = session.getMapper(UserMapper.class);
    Users u1 = usersMapper.queryById(1);
    System.out.println("---------------------------" + u1);
    Users u2 = usersMapper.queryById(1);
    System.out.println("+++++++++++++++++++++++++++" + u2);

    session.close();
}
10.2._二级缓存

SqlSessionFactory级别的缓存,同一个SqlSessionFactory构建的SqlSession发起的多次同构查询,会将数据保存在二级缓存中。

注意:在sqlSession.commit()或者sqlSession.close()之后生效。

10.2.1._开启全局缓存

是MyBatis中极为重要的调整设置,他们会改变MyBatis的运行行为,其他详细配置可参考官方文档。


    
      
    
        
         
    
    
      

10.2.2._指定Mapper缓存

    
    ...
    ...

代码验证

@Test
public void testLevel2() throws IOException {
    //加载配置文件
    InputStream in = Resources.getResourceAsStream("mybatis_config.xml");
    //创建Session工厂
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);


    //获取session
    SqlSession session = factory.openSession();
    UsersMapper usersMapper = session.getMapper(UserMapper.class);
    Users u1 = usersMapper.queryById(1);
    System.out.println("------------------" + u1);
    //让二级缓存生效
    session.close();

    session = factory.openSession();
    usersMapper = session.getMapper(UsersMapper.class);
    Users u2 = usersMapper.queryById(1);
    System.out.println("++++++++++++++++++++" + u2);
    session.close();
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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