MyBatis环境搭建及基本使用

mybatis入门

  1. 什么是框架?

    他是我们软件开发的一套解决方案,不同框架解决不同而难题

    好处:

    ​ 框架封装了很多细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。

  2. 三层架构

    表现层:展示数据

    业务层:处理业务需求

    持久层:和数据库交互

在这里插入图片描述
3. 持久层技术解决方案

JDBC技术:

​ Connection

​ PreparedStatement

​ ResultSet

Spring的JdbcTemplate

​ spring中对jdbc的简单封装

Apache的DBUtiles:

​ 简单封装

以上这些都不是框架

​ JDBC是规范

​ 其余为工具类

mybatis的概述

​ mybatis是一个持久层框架,用java编写

​ 它封装了jdbc操作的很多细节,使开发者只需要关注sql本身,而无需关注 注册驱动,创建连接等繁杂过程

​ 它使用了ORM思想实现了结果集的封装。

ORM:

​ Object Relational Mapping 对象关系映射

简单的说:

​ 就是把数据库表和实体类及实体类的属性对应起来

​ 让我们可以操作实体类就实现操作数据库表。

今天我们需要做到

​ 实体类中的属性和数据库表的字段名保持一致

mybatis的环境搭建

​ 第一步,创建maven工程,并导入坐标

​ pom.xml文件导入依赖(在dependencies标签中导入)

​ 第二步,创建实体类和dao/mapper接口

​ 实体类满足Serializable接口

​ 第三步,创建Mybatis的主配置文件

​ 注:idea中配置文件放在resource目录下

​ 例如:SqlMapConfig.xml,文件中有声明和约束

  • 标签:default属性,默认启用哪个环境- -

  • 标签:配置环境,id用于当前环境的标识,可以填入的default属性

    • :配置事物类型

    • :配置数据源(连接池)

      配置连接数据库信息value中填入相应信息

      • 驱动
      • url
      • 用户名
      • 密码
  • :指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件

    • 指定文件位置

在这里插入图片描述

​ 第四步,创建映射配置文件

​ IUserDao.xml

  • namespace写配置文件的全限定名

    写数据库语句

    • ​ 查询标签。id写dao/mapper接口中方法的名字

环境搭建的注意事项:

  1. 创建IUserDao.xml 和 IUserDao.java时

    名称是为了和之前保持一致

    在mybatis中,把持久层的接口名称和映射文件叫做:Mapper

    所以:IUserDao 和 IUserMapper是一样的

  2. mybatis的映射配置文件位置必须和dao接口的包结构相同

  3. 映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名

  4. 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名

当我们遵从上述2.3.4点,我们就无须再写dao的实现类

mybatis基本使用

  1. 读取配置文件

    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    

    读取配置文件:

    一般不用绝对路径或者相对路径

    1.使用类加载器:只能读取到类路径的配置文件

    2.使用ServletContext对象的getRealPath():得到一个当前应用部署的绝对路径。

  2. 创建SqlSessionFactory工厂

    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);
    

    创建工厂mybatis使用了构建者模式

    • 优势:把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象,省去了繁琐的细节
  3. 使用工厂生产SqlSession对象

    SqlSession session = factory.openSession();
    

    生产SqlSession使用了工厂模式

    • 优势:解耦(降低类之间的依赖关系)
  4. 使用sqlsession创建Dao接口的代理对象

    IUserDao user = session.getMapper(IUserDao.class);
    

    创建Dao接口实现类使用了代理模式

    • 优势:不修改源码的基础上对已有方法增强
  5. 使用代理对象执行dao中的方法

    执行方法

  6. 释放资源

    close关闭

注:

​ 不要忘记在映射文件中告知mybatis要封装到哪个实体类中

​ 配置方式:指定实体类的全限定类名(resulttype,resultmap)

mybatis基于注解的入门案例:
把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句

​ 同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名

明确:实际开发中,越是简便越好,所以都不写dao实现类的方式,一般采用xml和注解,但是mybatis支持写dao实现类

自定义mybtis的分析

  • mybatis在使用代理Dao的方式实现增删改查时做什么事?

    1. 创建对象

    2. 在代理对象中调用selectList

      在这里插入图片描述
      在这里插入图片描述

      要让上述方法执行,我们必须给方法提供两个信息

      第一个:连接信息

      第二个:映射信息

      ​ 它包含了两个部分:

      ​ 一:执行的SQL语句

      ​ 二:封装结果的实体类全限定名

      ​ 可以把以上两个信息结合起来定义成一个对象–>Mapper
      在这里插入图片描述
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      下一篇
      mybayis单表的crud

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值