MyBatis框架-毕设笔记

本文介绍了MyBatis,一个支持定制化SQL、动态SQL、ORM、事务管理及插件扩展的持久层框架,包括部分代码解析,如如何通过XML配置动态查询。同时提及了其与Spring的集成以及代码生成器的使用。
摘要由CSDN通过智能技术生成

目录

概念

特性

部分代码解析 

sellect查询

概念

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。

特性

  1. SQL 映射:MyBatis 通过配置文件或注解方式将接口和 SQL 语句映射起来,使得开发者可以直接编写 SQL 语句,而无需过多地关注 JDBC 的底层实现。

  2. 动态 SQL:MyBatis 提供了强大的动态 SQL 功能,通过 <if><choose><when><otherwise><foreach> 等标签,可以根据参数的不同值动态生成 SQL 语句。

  3. 对象关系映射 (ORM):虽然 MyBatis 不是一个完全的 ORM 框架(如 Hibernate),但它确实提供了将结果集映射到 POJOs 的功能。开发者可以通过配置或注解来指定数据库列和 Java 对象属性之间的映射关系。

  4. 事务管理:MyBatis 支持事务管理,可以通过配置文件或注解来配置事务的边界。

  5. 插件机制:MyBatis 提供了插件机制,允许开发者扩展框架的功能。

  6. 高级映射:除了基本的 CRUD 操作外,MyBatis 还支持存储过程、嵌套查询、复杂类型映射等高级功能。

  7. 代码生成器:MyBatis 提供了一个代码生成器,可以根据数据库表结构自动生成 MyBatis 的映射文件、POJOs 和 DAO(数据访问对象)代码,简化开发过程。

  8. 与 Spring 集成:MyBatis 可以很好地与 Spring 框架集成,通过 Spring 的事务管理和依赖注入功能,可以进一步提升开发效率和代码的可维护性。

部分代码解析 

sellect查询

这是一个使用MyBatis框架的XML配置片段,用于定义一个名为selectAll的SQL查询。MyBatis是一个流行的Java SQL映射框架,它允许开发者使用XML或注解来配置和映射SQL语句到Java对象。

这个配置片段定义了一个动态SQL查询,它基于传入的参数动态地构建WHERE子句,从admin表中选择数据,并将结果映射到com.example.entity.Admin类。

<select id="selectAll" resultType="com.example.entity.Admin">
        select
        <include refid="Base_Column_List" />
        from admin
        <where>
            <if test="id != null"> and id= #{id}</if>
            <if test="username != null"> and username like concat('%', #{username}, '%')</if>
            
        </where>
    </select>

以下是这段XML配置片段的详细解释:

<select id="selectAll" resultType="com.example.entity.Admin">:

这是一个select元素,表示一个查询操作。

id="selectAll":为这个查询操作定义了一个唯一的标识符,名为selectAll

resultType="com.example.entity.Admin":这表示查询的结果将被映射到com.example.entity.Admin这个Java类。

<include refid="Base_Column_List" />

这是一个include元素,它用于引用另一个SQL片段。

refid="Base_Column_List"表示引用的SQL片段的ID是Base_Column_List。这通常用于定义一些常用的列列表,然后在其他地方引用,以保持代码的重复和可维护性。

<where>标签内部,有一系列的<if>元素,每个都表示一个条件判断:

<if test="id != null"> and id= #{id}</if>:
  • 如果传入的参数id不为null(这个id指的是实体类中的id),那么它会添加 id = #{id}到SQL查询中。
  • #{id}  是参数占位符,它们在执行时会被替换为实际传入的参数值。
  • and 关键字在每个 <if> 标签的开始处使用,因为 <where> 标签会处理多余的 AND 前缀,所以即使当 id 或 typeId 为 null 时,也不会生成无效的 SQL 语句(如 WHERE AND ...)。这里的and表示“添加”,如果符合if条件,则添加id=?到where语句中。至于where语句中不同条件之间的AND <where> 标签会自动添加。
  • 如果 id 和 typeId 都不为 null,那么生成的 SQL 语句将类似于 WHERE id= ? AND type_id= ?,其中 ? 是参数占位符,执行时会被实际值替换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值