mybatis持久层框架

本文介绍了MyBatis作为JavaEE持久层框架的优势,如提高开发效率、增强代码扩展性和灵活性,并通过一个快速入门案例展示了其解决手动设置参数和SQL硬编码等问题的方法。在配置文件中编写SQL语句,使用反射和动态代理实现CRUD操作,通过Mapper接口和映射文件进行绑定。同时,讲解了参数占位符的使用以及动态代理的两种实现方式(JDK和CGLIB)。最后,提到了MyBatis的核心配置文件及注意事项,以及如何进行条件表达式的编写和连接查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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文件的约束

使用外部配置文件

<perso

注意:

Mapper接口和Mapper映射文件:

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

再来说下参数占位符

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

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

特殊字符处理:

  1. 转义字符:&lt 特殊字符比较少的时候使用
  2. CDTA区:<![CDATA[.........<........]]>: 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 插件

保持一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值