首页 > 其他分享 >mybatis框架

mybatis框架

时间:2024-01-27 16:13:40浏览次数:24  
标签:语句 映射 框架 数据库 查询 MyBatis SQL mybatis

1. 什么是MyBatis框架?
MyBatis是一个开源的持久层框架,用于将Java对象与数据库进行映射。它提供了简单且直观的编程接口,可以实现自定义SQL查询、存储过程调用和结果映射等功能。MyBatis不是一个全面的ORM(对象关系映射)框架,而是一种半自动化的数据访问层解决方案。

2. 为什么使用MyBatis框架?使用MyBatis框架有以下几个优势:灵活性:Mybatis允许开发人员直接编写SQL语句,利用SQL的强大功能来实现复杂查询操作。
性能控制:Mybatis提供了多种优化技巧来提高数据库访问的性能,如预编译语句、数据库连接池、缓存等。开发人员可以根据具体要求来进行配置和优化。
易于集成:Mybatis可以与各种数据源和框架(如Spring)进行无缝集成,方便与现有的项目进行整合。
可读性:Mybatis提供了清晰的配置文件和注解,使得SQL语句与java代码分离,易于阅读和维护。

3. 快速搭建MyBatis工程,可以按照以下步骤进行操作:
* 创建Maven或Gradle项目,引入MyBatis的依赖。
* 在配置文件(如application.properties或mybatis-config.xml)中配置数据库连接信息和MyBatis相关的配置项。
* 创建数据库表,并编写对应的实体类。
* 创建Mapper接口和对应的XML文件,定义SQL映射关系和操作。
* 根据需要,可在代码中使用SQLSessionFactory和SQLSession执行SQL语句和事务操作。
* 引入Mybatis和Mysql的依赖 

 

<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--mysql的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>

4. 要使用MyBatis完成CRUD操作(增删改查),可以按照以下步骤进行操作:

  •  定义数据库表,并创建对应的实体类。
  •  编写Mapper接口,定义与数据库表对应的查询方法(如查询、插入、更新、删除等)。
  •  在Mapper接口对应的XML文件中,编写SQL语句以及参数映射配置。
  •  在配置文件中配置Mapper接口的位置和其他相关信息。
  •  使用SQLSessionFactory获取SQLSession,并使用Mapper接口调用相应的方法进行数据库操作。

 

5.(1)创建数据库表:上海时区可加可不加

(2)Mybatis的配置文件和把映射文件加入到配置文件中:

 (3)Mybatis的映射文件:

 (4)测试:

 

6.要优化MyBatis的代码,可以考虑以下几点:

批量操作: 使用 MyBatis 提供的批量操作功能,可以显著提高数据库操作效率。通过在 Mapper 接口中定义批量插入、更新和删除方法,可以将多个数据操作合并为一次数据库访问。

结果集映射: 使用合适的结果集映射方式可以减少查询操作的数据库访问次数。可以通过使用 resultMap、association、collection 等标签来优化结果集的映射,减少不必要的关联查询或循环嵌套查询。

缓存配置: 适当配置 MyBatis 的缓存机制可以减少对数据库的频繁访问。可以通过在 Mapper 接口或映射文件中配置缓存功能,将查询结果缓存在内存中,提高查询性能。

分页查询: 通过合理的分页查询,可以提高查询效率并减少不必要的数据传输。可以使用 MyBatis 提供的分页插件或编写自定义的分页查询语句来实现分页功能。

动态SQL: 使用 MyBatis 的动态 SQL 功能可以根据不同的条件生成不同的 SQL 语句,避免编写大量重复的 SQL。可以使用 if、choose、where、trim 等标签来动态构建 SQL 语句,提高代码可读性和维护性。

预编译语句: 使用预处理语句可以减少数据库的解析和编译时间,提高查询效率。在 Mapper 接口中使用 #{参数名} 的方式来定义预处理语句的参数,避免使用字符串拼接的方式。

性能分析: 使用 MyBatis 提供的性能分析工具可以帮助定位性能瓶颈和优化查询。可以通过配置 MyBatis 的拦截器,启用性能分析功能并打印 SQL 语句的执行时间、执行计划等信息。

数据库索引: 在数据库中适当创建索引可以加快查询操作的速度。通过分析查询的频率和条件,合理地创建索引来优化数据库查询性能。

请注意,具体的优化策略可能因应用场景和需求不同而有所变化。因此,在优化代码之前,建议先进行性能分析和测试以确定瓶颈所在,并根据具体情况选择合适的优化方法和策略。

标签:语句,映射,框架,数据库,查询,MyBatis,SQL,mybatis
From: https://www.cnblogs.com/3522849860qq/p/17991549

相关文章

  • MyBatis注解模式和优化
    MyBatis注解模式之前我们使用xml文件方式实现sql语句的编写,我们也可以使用注解模式编写sql语句。前面的基本配置一致,不再叙述。第一步:创建实体类根据数据库的列名与表名设计实体类数据库信息:(表名t_student)实体类:@Data@NoArgsConstructor@AllArgsConstructorpubliccla......
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Checkbox组件
    鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Checkbox组件一、操作环境操作系统: Windows10专业版、IDE:DevEcoStudio3.1、SDK:HarmonyOS3.1二、Checkbox组件提供多选框组件,通常用于某选项的打开或关闭。子组件无。接口Checkbox(options?:{name?:string,group?:string})参数参数......
  • 搭建MyBatis工程
    快速搭建MyBatis工程第一步:创建一个maven的工程这里使用maven来创建MyBatis工程第二步:导入相关依赖需要导入MyBatis工程中对应的依赖,以及后期所需要的依赖<dependencies><!--mybatis的依赖--><dependency><groupId>org.mybatis</groupId>......
  • 如何打造一个网络框架模块对接服务器
    一、了解网络框架的基本原理在开始打造网络框架模块之前,首先需要了解网络框架的基本原理。网络框架是一个软件模块,用于处理网络通信的各种细节,包括数据传输、协议解析、错误处理等。常见的网络框架有HTTP、TCP/IP、WebSocket等。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱......
  • MyBatis简易教程
     MyBatis是数据库访问层框架,是一个应用层框架。 MyBatis简易教程(01):mybatis基础MyBatis简易教程(02):mybatis动态sqlMyBatis简易教程(03):mybatis关联映射(一对一)MyBatis简易教程(04):mybatis关联映射(一对多、多对一)MyBatis简易教程(05):mybatis关联映射(多对多)MyBatis简易教程(06):MyBati......
  • spring boot mybatis plus & tk-mybatis
    使用Mybatis时,最大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这大量增加了程序员的负担。避免重复书写CRUD映射的框架有两个通用mybati......
  • 极速搭建基于mvc5的最小框架
    前言开发环境vs2019创建项目项目文件结构新建控制器新建视图编写视图代码编写控制器代码修改默认路由运行测试查看结果......
  • Pytest 源码解读 [1] - [pluggy] 插件框架介绍
    Pluggy(https://github.com/pytest-dev/pluggy)Pytest的核心实际的基于 Pluggy 这个pluginframework的,实际上pytest本身就是由一个一个插件组成的本来pluggy的代码是在pytest的repo里,后来迁移了出来,作为一个独立的项目。Pluggy作为一个独立的pluginframework......
  • BEVFusion: 一个通用且鲁棒的激光雷达和视觉融合框架
    BEVFusion:一个通用且鲁棒的激光雷达和视觉融合框架 XiaoxiaoYu程序员 50人赞同了该文章文章arxiv:https://arxiv.org/pdf/2205.13790.pdf代码已github开源:https://github.com/ADLab-AutoDrive/BEVFusion  1背景简介感知模块(如3DBBox检......
  • python--pyQt 基础框架代码 pyside6
    importsysfromPySide6importQtWidgets,QtCore,QtGuifromPySide6.QtCoreimportQt,QRectfromPySide6.QtGuiimportQColor,QEnterEventfromPySide6.QtWidgetsimportQApplication,QDialog,QMainWindow,QGraphicsDropShadowEffectimportyiqi_uiclassMain......