zoukankan      html  css  js  c++  java
  • MyBatis框架

     

    对比JPA 和Hibernate 和 Mybatis的区别 https://www.cnblogs.com/wanghj-15/p/11182334.html

    MyBatis 教程 https://www.w3cschool.cn/mybatis/

    Mybatis教程-实战 https://blog.csdn.net/hellozpc/article/details/80878563

    1、MyBatis历史

     1MyBatisApache的一个开源项目iBatis, 20106月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x 正式更名为MyBatis ,代码于201311月迁移到Github

     2iBatis一词来源于“internet”“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL MapsData Access ObjectsDAO

    2、MyBatis简介

    1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

    2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

    3) MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和JavaPOJOPlain Old Java Objects,普通的Java对象)映射成数据库中的记录

     

    3、为什么要使用MyBatis – 现有持久化技术的对比

     

    1) JDBC

     

    ① SQL夹在Java代码块里,耦合度高导致硬编码内伤

     

    ② 维护不易且实际开发需求中sql是有变化,频繁修改的情况多见

     

    2) HibernateJPA

     

    ① 长难复杂SQL,对于Hibernate而言处理也不容易

     

    ② 内部自动生产的SQL,不容易做特殊优化

     

    ③ 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致数据库性能下降

     

    3) MyBatis

     

    ① 对开发人员而言,核心sql还是需要自己优化

     

    ② sqljava编码分开,功能边界清晰,一个专注业务、一个专注数据

     

    4、Mybatis映射文件简介

     

    1) MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。

     

    2) SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

     

    cache – 给定命名空间的缓存配置。

     

    cache-ref – 其他命名空间缓存配置的引用。

     

    resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加 载对象。

     

    parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能 在将来被移除,这里不会记录。

     

    sql – 可被其他语句引用的可重用语句块。

     

    insert – 映射插入语句

     

    update – 映射更新语句

     

    delete – 映射删除语句

     

    select – 映射查询语

     

    6、MyBatis 动态SQL

     

    6.1MyBatis动态SQL简介

     

    1) 动态 SQLMyBatis强大特性之一。极大的简化我们拼装SQL的操作

     

    2) 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似

     

    3) MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作

     

    if

     

    choose (when, otherwise)

     

    trim (where, set)

     

    foreach

     

    4) OGNLObject Graph Navigation Language )对象图导航语言,这是一种强大的

     

    表达式语言,通过它可以非常方便的来操作对象属性。 类似于我们的ELSpEL

     

    访问对象属性: person.name

     

    调用方法:     person.getName()

     

    调用静态属性/方法: @java.lang.Math@PI

     

            @java.util.UUID@randomUUID()

     

    调用构造方法: new com.atguigu.bean.Person(‘admin’).name

     

    运算符:      +,-*,/,%

     

    逻辑运算符:  in,not in,>,>=,<,<=,==,!=

     

    注意:xml中特殊符号如”,>,<等这些都需要使用转义字符

     

    6.2 if  where

     

    1) If用于完成简单的判断.

     

    2) Where用于解决SQL语句中where关键字以及条件中第一个and或者or的问题 

     

    7、MyBatis 逆向工程

     

    7.1逆向工程简介

     

    1) MyBatis Generator: 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写

     

    官方文档地址

     

    http://www.mybatis.org/generator/

     

    官方工程地址

     

    https://github.com/mybatis/generator/releases

     

    7.2逆向工程的配置

     

    1) 导入逆向工程的jar

     

    mybatis-generator-core-1.3.2.jar

     

    2) 编写MBG的配置文件(重要几处配置),可参考官方手册

     

     

    8、SSM框架整合

     

    9.1 整合注意事项

     

    1) 查看不同MyBatis版本整合Spring时使用的适配包;

     

        

     

    2) 下载整合适配包

     

    https://github.com/mybatis/spring/releases

     

    3) 官方整合示例,jpetstore

     

    https://github.com/mybatis/jpetstore-6

     

     

     

    9.2 整合思路、步骤

     

    1) 搭建环境

     

    创建一个动态的WEB工程

     

    导入SSM需要使用的jar

     

    导入整合适配包

     

    导入其他技术的一些支持包  连接池 数据库驱动  日志....  

     

    2) Spring + Springmvc

     

    web.xml中配置:   Springmvc的前端控制器   实例化Spring容器的监听器   字符编码过滤器  REST 过滤器

     

    创建Spring的配置文件: applicationContext.xml:组件扫描、 连接池、 事务.....

     

    创建Springmvc的配置文件: springmvc.xml : 组件扫描、 视图解析器 <mvc:...>

     

    3) MyBatis

     

    创建MyBatis的全局配置文件

     

    编写实体类  Mapper接口  Mapper映射文件

     

    4) Spring + MyBatis

     

    MyBatisSqlSession的创建 .

     

    MyBatisMapper接口的代理实现类

     

    5) 测试:  REST CRUD

     

    课堂: 查询所有的员工信息,列表显示

     

    课下: 增删改

     

     

     

     

     

  • 相关阅读:
    新人优惠的风险
    Linux服务器记录并查询历史操作记录
    斜率比截距重要
    专访李果:初生牛犊不怕虎的移动创业者
    iPhone开发视频教程 ObjectiveC部分 (51课时)
    珍藏40个android应用源码分享
    iPhone开发教程 UI基础课程(58课时)
    ios源码分享之动画类
    史上最全的ios源码汇总。欢迎收藏
    Android开发教程汇总
  • 原文地址:https://www.cnblogs.com/highpointengineer/p/10898233.html
Copyright © 2011-2022 走看看