MyBatisPlus理解

MyBatisPlus是mybatis的增强,mybatis是数据库持久化的框架,但mybatisplus并不是替代mybatis,而是相辅相成的关系

MyBatisPlus不会对以前使用mybatis开发的项目进行影响,引入后仍然正常运行。

使用方法:

1.在引入了对应依赖mybatis-plus-boot-starter之后,该依赖包括了原本mybatis的依赖,所以原本的依赖完全可以删掉,之后就可以免除mybatis中,使用注解,xml定义单表查询的语句的操作。省时省力,只要直接调用mp中封装的大量方法即可,见名知意。

2.把项目中的mapper接口继承mp提供的父接口BaseMapper,因为这个接口中封装了大量方法,只有继承了该接口,才能调用mp的方法开简化书写sql语句,但是必须注意,继承接口时一定要指定泛型为你mapper对应实体类的类型,这样,mp才知道执行crud时,操作的是哪一个实体

3.mp是通过扫描实体类,然后通过反射,获取实体类的class文件,从而得到实体类对象,然后根据里面的对象转化为数据库表信息

有一些约定是:

        实体类中驼峰命名的对象名转化为数据库表结构字段名的下划线命名法(userName -> user_name)

        id名称的字段视为主键

        类名驼峰转化为下划线表名

按照上述配置,在运行时mp还会自动完成相应的转换,但有时遇到名称不按规范定义的情况,就需要手动进行配置,来让mp能够识别。

4.有3个常用的注解帮助mp来指定信息

@TableName:用于指定表名,当数据库表名称和实体类名称不一致,需要在实体类上通过来主键指定

例如数据库表名为:tb_user,实体类名称:User

就要在实体类User上添加注解@TableName("tb_user")

@TableId:用于指定表中主键的字段信息

主键属性一般设置为自动增长(AUTO)autoIncrement,但也可以设置其他属性

有INPUT:即通过实体类的set方法进行手动赋值

ASSIGN_ID:分配id,基于接口IdentifyGenerator的方法nextid来动态生成id,根据雪花算法实现,生成的id为20位Long类型整数

设置type为自增长后,添加id时可以不用指定id,系统会自动进行增加,但如果没有指定type类型

那么注意,此时默认类型是使用雪花算法自动分配的id值

@TableField:指定表中的普通字段信息

如果字段名不一致需要指定,和TableName用法类似

但是有时遇到实体类字段名是is开头的,且位布尔类型,因为mp底层转换时会忽略is,所以配置时相当于is开头的字段名与数据库字段名不一致,手动配置即可

再或者实体类对象名称是数据库的关键字,得配置转义字符以免发生错误,即加上一个点

有时实体类中存在数据库表结构中不存在的字段类型,那还有种特殊用法,即指定@TableField(exist = false)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526230.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字建筑欢乐颂,智慧工地共筑美好未来!

在解决农民工人欠薪这一长期困扰建筑业的难题上,某建筑公司响应政策,严格按照实名制管理,实施过程中发现并克服了传统管理模式的痛点:聊天群组的信息时,往往会被淹没在“收到”回复中,影响沟通效率&#xf…

人工智能|机器学习——K-means系列聚类算法k-means/ k-modes/ k-prototypes/ ......(划分聚类)

1.k-means聚类 1.1.算法简介 K-Means算法又称K均值算法,属于聚类(clustering)算法的一种,是应用最广泛的聚类算法之一。所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,…

浏览器与Node.js事件循环:异同点及工作原理

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Linux网络基础2之协议

(。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 目录 1.协议 1.序列化与反序列换 2.协议定制 二…

【C语言】linux内核ip_generic_getfrag函数

一、讲解 这个函数ip_generic_getfrag是传输层用于处理分段和校验和的一个辅助函数,它通常用在IP层当需要从用户空间拷贝数据构建成网络数据包时。这个函数的实现提供了拷贝数据和进行校验和计算(如果需要的话)的功能。函数的参数解释如下&a…

【打工日常】使用docker部署个人实时在线文档协助编辑器

一、Etherpad介绍 Etherpad是一个高度可定制的开源在线编辑器,提供真正实时的协作编辑。放在自己的服务器里面,可以更大程度的保护自己工作的隐私,并且Etherpad允许您实时协作编辑文档,就像在浏览器中运行的实时多人编辑器一样这样…

深入解析汽车MCU的软件架构

一、背景知识 电动汽车(EV)正在成为首选的交通方式,为传统内燃机汽车提供了一种可持续发展的环保型替代方案。在电动汽车复杂的生态系统中,众多电子控制单元(ECU)在确保其高效运行方面发挥着至关重要的作用…

关于 JVM

1、请你谈谈你对JVM的理解? JVM由JVM运行时数据区(图示中蓝色框包含部分)、执行引擎、本地库接口、本地方法库组成。 JVM运行时数据区,分为方法区、堆、虚拟机栈、本地方法栈和程序计数器。 1.方法区 Java 虚拟机规范中定…

【ubuntu】安装 Anaconda3

目录 一、Anaconda 说明 二、操作记录 2.1 下载安装包 2.1.1 官网下载 2.1.2 镜像下载 2.2 安装 2.2.1 安装必要的依赖包 2.2.2 正式安装 2.2.3 检测是否安装成功 方法一 方法二 方法三 2.3 其他 三、参考资料 3.1 安装资料 3.2 验证是否成功的资料 四、其他 …

数据库中 SQL Hint 是什么?

前言 最近在调研业界其他数据库中 SQL Hint 功能的设计和实现,整体上对 Oracle、Mysql、Postgresql、 Apache Calcite 中的 SQL Hint 的设计和功能都进行了解,这里整理一篇文章来对其进行梳理,一是帮助自己未来回顾,加深自己的思…

每日一练:LeeCode-209、长度最小的子数组【滑动窗口+双指针】

每日一练:LeeCode-209、长度最小的子数组【滑动窗口双指针】 思路暴⼒解法滑动窗口 本文是力扣 每日一练:LeeCode-209、长度最小的子数组【滑动窗口双指针】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐 L…

【论文笔记】Language Models are Few-Shot Learners

Language Models are Few-Shot Learners 本部分是 GPT-3 技术报告的第一部分:论文正文、部分附录。 后续还有第二部分:GPT-3 的广泛影响、剩下的附录。 以及第三部分(自己感兴趣的):GPT-3 的数据集重叠性研究。 回顾…