Mybatis-Plus

MybatisPlus

MP介绍

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

MP的特点

1.无侵入:只做增强不做改变,引入他不会对现有工程产生影响
2.损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作
3.强大的CRUD操作:内置通用mapper、通用service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。

入门案例

1.导入jar包
	<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>3.4.2</version>
	</dependency>
2.编辑Pojo对象

说明:MP要求以面向对象的方式操作数据库.其中对象与表 属性与字段必须映射!!!
实现方式: 利用注解进行绑定.
数据库表:
在这里插入图片描述
在这里插入图片描述

3.编辑mapper接口对象

在这里插入图片描述

4.编辑yml配置文件

说明:MP增强了Mybatis,Mp内部包含了mybatis,所有两者的jar不能同时出现
在这里插入图片描述

5.编辑测试案例

在这里插入图片描述

MP核心原理

1.需求

说明:之前操作数据库采用sql(面向过程的语言)方法进行编辑,但是如果所有的单表操作都由程序员完成那太累了,所有能否开发一种机制可以实现以面向对象的方式操作数据库,MP就诞生了

2.原理说明

1.对象与数据表进行关联 @TableName
2.MP采用BaseMapper的方式 将公共的接口方法进行了抽取。采用泛型的方式进行约束
3.MP将用户操作的对象在底层自动的转化为sql语句

3.对象转化sql原理

对象方法: userMapper.insert(User对象);
Sql语句: insert into demo_user(id,name…) value(100,xxx…)
步骤:
1.根据userMapper找到对应的class类型
2.根据userMappe的类型通过反射机制获取父级接口类型BaseMapper
3.找到BaseMapper类型之后,获取泛型类型User.class
4.获取User.class之后,获取class的注解名@TableName注解,获取注解名称 至此表名获取成功
5.根据User.class获取其中的属性名称.之后获取属性上的@TableField 获取字段名称.
6.之后利用对象的get方法获取属性的值最终实现了sql语句的拼接过程
7.MP将整理好的Sql交给Mybatis(jdbc)去处理. 最终实现了以对象的方式操作数据库.

MP的调用过程

1.以新增用户为例
在这里插入图片描述
用户先新建一个对象,给对象赋值----》然后调用insertUser方法—》调用Mapper接口里的在这里插入图片描述
转化为sql语句 insert into demo_user value (id,name,age,sex)
注意:对象的属性必须要有包装类型
在这里插入图片描述
必须保证对象的属性值默认为Null,当给某个属性赋值时,其他属性仍然为空,不影响该属性的转化为sql语句。
因为sql语句查询时默认以属性不为null的值查找

2.根据条件查询的语句,需要借助querywrapper条件构造器,他相当于sql语句的where.
原则:根据对象中不为null的属性拼接where条件
以select * from demo_user where name=‘白骨精’ sex="女"为例
在这里插入图片描述

1.封装条件的对象 name=‘白骨精’ sex=女
2.对条件构造器赋值 where name=‘白骨精’ sex=“女”
3.然后根据表查找 select * from demo_user where name=‘白骨精’ sex=“女”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值