MyBatis

MyBatis是什么

       MyBatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有JDBC操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。用来简化JDBC的操作。

       该框架用来将内存中的数据写入到磁盘中(数据库中),和数据库交互。

       用该框架开发的程序启动时占用的资源少、对业务代码的侵入不强,比较容易配置、使用和部署简单。

         ORM(对象关系映射),用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生;Java中的数据库和实际数据库类型不一致,在使用时,需要进行类型转换,MyBatis可以将Java中的类型逐一映射到数据库的字段类型上;

        Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成,所以,称之为半自动ORM映射工具

MyBatis优点

1、基于SQL语句编程,相当灵活

2、代码量少,与JDBC相比,减少了50%以上的代码量

3、很好的与各种数据库兼容

4、数据库字段和对象之间可以有映射关系

5、能够与Spring很好的集成

MyBatis的缺点

1、SQL语句的编写工作量较大,字段多,关联表多时,语句复杂

2、数据库移植性差,SQL语句依赖于数据库,不能随意更换数据库

持久层

    • 负责将数据保存到数据库的那一层代码

    • Java EE 三层架构:表现层、业务层、持久层

快速使用

        MyBatis的快速开发使用可借助MyBatis官网介绍,根据自己的需求来进行开发。MyBatis官网链接

    1. 创建maven项目,在pom文件里面导入坐标/依赖

    1. 编写MyBatis核心配置文件

在 resourse 文件目录下创建 mybatis 配置文件 mybatis-config.xml

    1. 编写 SQL 映射文件

SQL 映射文件里面是 Sql语句和数据库的映射,

    1. 编码

      1. 定义 POJO 数据库数据对应的实体类

      2. 加载核心配置文件,获取 SqlSessionFactory 对象

      3. 获取 SqlSession 对象,执行 SQL 语句

      4. 释放资源

Mapper 代理

使用Mapper 代理开发的目的

解决原生代码中存在的部分硬编码问题(代码中存在直接使用字符串)

简化后期执行SQL

Mapper 代理开发步骤

    1. 定义与 SQL 映射文件同名的 Mapper 接口,并且将 mapper 接口与映射文件放在同一目录下(为了代码开发的规范,将mapper 映射文件放在 resourse 目录下,在该目录下创建与代码接口文件相同的目录结构,)。

    1. 设置 SQL 映射文件的 namespace 属性为 Mapper 接口全限定名

    2. 在 Mapper 接口中定义fang'fa方法名就是 SQL 映射文件中 SQL语句的id,并保持参数类型和返回值类型一致。

    1. 编码

      1. 通过 SqlSession 的getMapper 方法获取 Mapper 接口的代理对象

      2. 调用对应方法完成 sql  的执行

结果映射

解决当数据库列名与对应的实体类属性名称不一样时,将两者进行映射,以便对结果进行封装

在 mapper.xml文件中进行列名与属性名的一个映射

在 Sql 语句中将 resultType 替换成 resultMap

进行条件查询时可能出现的问题:特殊字符

在xml文件中一些特殊字符会识别成其他的意思,所以在 xml 文件中使用特殊字符需要进行处理

sql  语句进行查询时,<  >  =  等符号

两种方法:

      1. 使用转义字符来代替

      2. 使用 CDATA区(在需要使用特殊字符的地方打出 'CD ' 会自己补全代码)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值