山东大学软件学院项目实训-创新实训-基于大模型的旅游平台 汇总(十五)

本文我们深度探讨Mybatis-Plus技术在我们项目中的应用

目录

特性

框架结构

支持数据库

示例

1. 创建实体类

2. 创建对应mapper

3. 创建Service接口

4. 创建Service接口的实现类

5.创建对应控制器


Mybatis-Plus(简称 MP)是一个Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

框架结构

支持数据库

  • mysql 、mariadb 、oracle 、db2 、h2 、hsql 、sqlite 、postgresql 、sqlserver 、presto 、Gauss 、Firebird

  • Phoenix 、clickhouse 、Sybase ASE 、 OceanBase 、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库

示例

以我们的代码为例,我们使用Mybatis-Plus只需要以下几个步骤。以我们的酒店部分为例。

1. 创建实体类

  @Data
  @TableName("hotels")
  public class Hotel implements Serializable {
      @TableId
      private String hotelId;                 // 酒店ID
      private String hotelName;               // 酒店名称
      private String hotelHeadPicture;        // 酒店头图
      private String starLevelDes;            // 星级描述
      private BigDecimal commentScore;       // 评论评分
      private String commentScoreDes;         // 评论评分描述
      private String commentMainTag;          // 评论主标签
      private Integer commentCount;           // 评论数量
      private Integer historicalConsumer;     // 历史消费者
      private String promoteBooking;          // 推广预订
      private String hotelAddress;            // 酒店地址
      private String trafficInfo;             // 交通信息
      private String areaName;                // 区域名称
  }

上部分代码定义了一个名为Hotel的Java类,用于表示酒店信息。代码和注解的部分解释如下:

  1. @Data

    这是一个来自lombok库的注解,自动为类的字段生成标准的setter和getter方法,以及toStringequalshashCode方法。使用这个注解可以简化代码,避免手动编写这些方法。

  2. @TableName("hotels")

    这是一个来自MyBatis-Plus库的注解,用于指定这个类对应的数据库表名。在这个例子中,Hotel类对应于数据库中的hotels表。

  3. 类字段

    每个字段代表数据库表中的一列,并具有相关的Java类型和描述,以以下几个字段举例:

    private String hotelId;:酒店ID,使用@TableId注解标记为表的主键。

    private String hotelName;:酒店名称。

    private BigDecimal commentScore;:评论评分,使用BigDecimal类型以精确表示分数。

这个类通过使用注解和字段定义,为数据库操作提供了一个结构化的Java表示,使得在应用程序中操作酒店数据变得简单和直接。尤其是在使用MyBatis-Plus框架时尤其见到。

2. 创建对应mapper

  
  @Mapper
  public interface HotelMapper extends BaseMapper<Hotel> {
  }

上面的代码定义了一个名为 HotelMapper 的接口,用于处理与酒店相关的数据库操作。这是一个 Java 接口,它使用了 MyBatis-Plus 框架的功能,通过继承 BaseMapper 接口来实现。下面是对代码的详细解释:

  1. @Mapper

    这是 MyBatis 的注解,用于标识这个接口是一个 MyBatis 的 Mapper 接口。这告诉 MyBatis 框架,此接口的实现应该自动创建并注册为 Spring 应用程序上下文中的一个 Bean,从而可以被自动依赖注入到其他的组件中。

  2. 接口定义:public interface HotelMapper extends BaseMapper<Hotel>定义了一个接口

    HotelMapper它扩展了 MyBatis-Plus 的 BaseMapper 接口。

    BaseMapper<Hotel>:这是 MyBatis-Plus 提供的一个泛型接口,Hotel 类型参数表明这个 Mapper 将处理 Hotel 类型的实体。BaseMapper 提供了一系列标准的数据库 CRUD(创建、读取、更新、删除)操作方法,如 insert(), delete(), update(), 和 selectById() 等。

继承了BaseMapper之后,基本的CRUD操作我们就已经有了,如下图所示。

当我们注入mapper之后会发现他提供了一系列CRUD方法, 包括根据ID批量删除,插入,批量查找等等,这些方法不用我们再写sql语句实现。

3. 创建Service接口

  public interface HotelService extends IService<Hotel> {
  ​
  }

上面的代码定义了一个名为 HotelService 的接口,用于处理与酒店实体相关的业务逻辑。它使用了 MyBatis-Plus 框架的功能,通过继承 IService 接口来实现。

  1. 接口定义:public interface HotelService extends IService<Hotel>定义了一个接口HotelService

    ,它扩展了 MyBatis-Plus 的 IService 接口。

    IService<Hotel>:这是 MyBatis-Plus 提供的一个泛型接口,Hotel 类型参数指明这个服务将处理 Hotel 类型的实体。IService 接口提供了一系列标准的服务层操作方法,如 save(), removeById(), update(), 和 getById() 等。

  2. 目的与功能

    通过继承 IService, HotelService 接口自动继承了所有这些基础的服务操作方法,允许进行各种常见的业务操作,例如保存、删除、更新和查询酒店数据。

    服务层(Service Layer)通常被用于封装业务逻辑,处理业务规则,以及执行与数据访问层(如 HotelMapper)的交互。这种设计模式有助于保持业务逻辑的独立性,从而使得代码更易于管理和维护。

4. 创建Service接口的实现类

  
  @Service
  public class HotelServiceImpl extends ServiceImpl<HotelMapper, Hotel> implements HotelService{
  ​
  }

这段代码定义了 HotelServiceImpl 类,这是 HotelService 接口的一个实现。这个类使用了 MyBatis-Plus 框架的 ServiceImpl 类作为基类,以便提供标准的业务逻辑方法。

  1. 这是一个 Spring 框架的注解,用于标记此类为一个服务组件。标记为 @Service 的类会被 Spring 自动检测并注册为一个 Bean,这样它就可以被自动注入到其他组件中。

  2. 类定义:public class HotelServiceImpl extends ServiceImpl<HotelMapper, Hotel> implements HotelService

    HotelServiceImpl:这是类的名称,它实现了 HotelService 接口。

    extends ServiceImpl<HotelMapper, Hotel>表明 HotelServiceImpl 继承自 MyBatis-Plus 的 ServiceImpl类。ServiceImpl 是一个通用的服务实现类,提供了一系列基于 CRUD 的方法。

    HotelMapper:指定这些服务方法将使用 HotelMapper 作为数据访问层的接口,以便进行数据库操作。

    Hotel:指定实体类型为 Hotel,这意味着提供的服务将针对 Hotel 实体。

    implements HotelService:表明这个类实现了 HotelService 接口,承诺提供接口中定义的所有业务逻辑方法。

  3. 功能

    由于继承自 ServiceImplHotelServiceImpl 自动获得了许多标准的业务方法,如增加、删除、修改和查询等,这些方法直接利用 HotelMapper 来访问数据库。

    实现 HotelService 接口确保 HotelServiceImpl 必须提供接口中定义的所有方法,此外还可以在此类中添加特定的业务逻辑方法,以满足特定的业务需求。

5.创建对应控制器

  
  @Controller
  public class HotelController {
  ​
      @Autowired
      private HotelService hotelService;
  }

上面的代码定义了一个名为 HotelController 的 Spring 控制器类,用于处理与酒店相关的HTTP请求。这个类使用了 Spring MVC 框架的一些基本特性。

  1. @Controller

    这是一个 Spring 框架的注解,用于标记该类为一个控制器(Controller)。在 Spring MVC 中,控制器负责处理由 DispatcherServlet 接收的请求,并返回响应。控制器中通常包含一个或多个用于处理特定请求的方法。

  2. 类定义

    public class HotelController:这是类的定义,命名为 HotelController。它用于组织处理与酒店相关的HTTP请求的逻辑。

  3. 依赖注入

    @Autowired:这是 Spring 的自动注入标注。通过此注解,Spring 将自动查找并注入与声明的类型匹配的 Bean。在这种情况下,它将自动注入一个 HotelService 类型的 Bean。

    private HotelService hotelService;:这是一个私有字段,用于存储注入的 HotelService 实例。HotelService 是之前定义的服务接口,负责提供与酒店相关的业务逻辑操作。在这个控制器中,通过 hotelService 字段,控制器可以访问所有定义在 HotelService 接口中的业务方法。

通过上面的操作,我们在controller中就可以调用service里面的方法,因为继承了IService类,所以我们只需要调用其中定义好的方法就可以完成CRUD需求,如果涉及到复杂操作,则可以编写函数调用mapper层进行操作处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值