• mybatis持久层框架


    MyBatis持久层框架

    javaEE三层架构:表现层、业务层、持久层

    框架 持久层框架

    半成品软件 对jdbc的封装 简化了数据库操作编码

    作用:

    1. 开发效率高 (jdbc) 企业基本不会使用原生的jdbc
    2. 使用框架开发的 代码 扩展性,灵活性更强

    MyBatis快速入门 案例

    解决的问题:

    1. 代码繁琐
    2. 手动的设置参数
    3. 手动封装结果跟数据
    4. sql语句 字符串 写死在了代码当中 字面值 ---- 扩展性灵活性比较差 耦合度比较高
    5. 硬编码 字面值 - - - 写出来的功能相对来说灵活性就比较差 消耗大量的精力

    硬编码的文件全部放在配置文件中

    使用反射,自动进行参数的配置,结果集的封装

    重点:在配置文件中写sql语句

    编写入门案例

    1. 数据库:

    2. 数据表:

    3. 创建maven项目

    4. 导入jar包

    • mybatis框架 jdbc mysql-conector-java
    • 单元测试jar包
    1. 入门案例
    • mybatis实现crud操作

    • 1.配置文件:mybatis的核心文件:数据库的连接信息

    • mybatis的SQL语句的配置文件:sql语句

      编码:

      sqlSessionFactoryBuild

      sqlSessionFactory

      sqlSession

      ​ crud方法

    工厂设计模式/构建者设计模式:

    • 工厂帮助创建对象(创建对象的操作比较繁琐)
    • 解耦的作用

    sql语句改变了 只需要修改配置文件 密码也是 硬编码 namespace , id 这块还是硬编码

    不需要封装成Java实体对象 set get 也不需要了

    基于动态代理 来实现 现在还是调用的会话对象来实现的增删改查

    基于代理的开发模式

    1. 创建mapper接口 定义crud操作数据库的各个方法
    2. 创建和mapper接口同名称同位置的mapper文件,在配置文件中编写sql语句
    3. 编码:获取Mapper接口的代理对象,调用mapper接口中定义的方法

    规则

    1. Mapper配置文件的namespace需要和Mapper接口进行绑定:

      namespace设置成接口的全路径:包名称+接口名称

      1. mapper接口的方法名称需要和sql标签的id进行绑定:

        mapper接口方法名称 和sql标签的id保持一致

        mapper接口方法的返回值类型和参数类型 和 sql标签中定义的类类型

    • 动态代理开发模式
    • jdk:特点
    1. 被代理对象 代理对象 实现了用一个接口
    • cglib
      1. 被代理对象 和 代理对象 是继承 (子父类) 的关系

    底层 会生成 一个代理对象 实现 了 接口 重写 里面呢实现类 重写 了jdbc的代码 配置文件的里面的 跟当前方法同名的sql语句 mybatis 帮我们们定义了许多

    核心配置文件:

    1. enviroment 环境标签
    2. mappers 代理标签

    注意: 收到dtd文件的约束

    使用外部配置文件

    注意:

    Mapper接口和Mapper映射文件:

    1. 同名称,同位置(target/classes/。。。)
    2. namespace设置成接口的全路径(包名称+接口名称)
    3. 接口方法的跟返回值类型/参数 映射文件中的

    再来说下参数占位符

    1. #{}:会将其替换为?。为了防止sql注入的问题,将来自动设置参数值,底层使用的是pareperstatement
    2. ${}:拼sql。会存在sql注入的问题/,底层使用多个是statement
    3. 使用时机:
      • 参数传递的时候:#{}
      • 表名或者列名不固定的情况下:${} 会存在sql注入问题

    参数类型:parameterType:可以省略,可以用来设置参数类型

    特殊字符处理:

    1. 转义字符:< 特殊字符比较少的时候使用
    2. CDTA区:: CD 提示

    条件表达式?like 模糊查询 select * from tb_brand where status = ? company_name like ? and brand_name like ? -------> 返回一个List集合

    如何连接?

    步骤:

    1. 编写接口方法:Mapper接口
    2. 参数:所有查询条件
    3. 结果:List
    4. 编写SQL语句:SQL映射文件
    5. 执行方法,测试

    连接数据库的操作的步骤 编辑数据源

    MybatisX 插件

    保持一致

  • 相关阅读:
    树莓派4B安装ffmpeg
    Postman中的Pre-request Scrip详解
    synchronized原理-字节码分析、对象内存结构、锁升级过程、Monitor
    【外汇天眼】不工作只做交易?探索不平凡的生活
    精确率、准确率、召回率
    ESP8266-Arduino编程实例-TSL2561亮度传感器驱动
    GBASE观察:扩展分析型数据库
    AWS云上面的k8s统一日志收集(Fluent Bit+EKS+CW)
    请给出python程序运行结果
    工具清单 - CI & CD
  • 原文地址:https://blog.csdn.net/weixin_49443524/article/details/127799603