MybaatisPlus详细

一、什么是MybatisPlus

MybatisPlus可以节省大量时间,所有的CRUD代码都可以自动化完成

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

特性:

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

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

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

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

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

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

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

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

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

二、queryMrapper常用方法列表

函数说明例子
eq等于(=)queryWrapper.eq(“user_name”, “张三”); //user_name=“张三”

ne

不等于(<>)queryWrapper.ne(“user_name”, “张三”); //user_name<>“张三”
gt大于(>)queryWrapper.gt(“level”, 1); //level>1
ge大于等于(>=)queryWrapper.ge(“level”, 1); //level>=1
It小于(<)queryWrapper.lt(“level”, 1); //level<1
Ie小于等于(<=)queryWrapper.le(“level”, 1); //level<=1
between值1和值2之间queryWrapper.between(“level”, 1,10); //level>=1 and level <=10
notbetween不在值1和值2之间queryWrapper.notBetween(“level”, 1,10);//level<1 or level >10
like模糊匹配 like %值%queryWrapper.like(“user_name”, “张三”); //user_name like “%张三%”
not like不模糊匹配 not like %值%queryWrapper.notLike(“user_name”, “张三”); //user_name not like “%张三%”
likeLeft左模糊匹配 like %值queryWrapper.likeLeft(“user_name”, “张三”); //user_name like “%张三”
likeRight右模糊匹配 like 值%queryWrapper.likeRight(“user_name”, “张三”); //user_name like “张三%”
isNull字段 为空queryWrapper.isNull(“user_name”);//user_name is null
isNotNull字段 不为空queryWrapper.isNotNull(“user_name”);//user_name is not null
in字段 in (v0,v1,…)queryWrapper.in(“user_name”, {“张三”,“李四”,“王五”}); // user_name in (“张三”,“李四”,“王五”)
notIn字段 not in (v0,vl,…)queryWrapper.notIn(“user_name”, {“张三”,“李四”,“王五”}); // user_name not in (“张三”,“李四”,“王五”)
inSql字段 in ( sql语句)queryWrapper.in(“user_name”, (select name from student where age< 23)); // user_name in (select name from student where age< 23)
notInSql字段 not in ( sql语句)ueryWrapper.notIn(“user_name”, (select name from student where age< 23)); // user_name not in (select name from student where age< 23)
groupBy分组:GROUP BY 字段queryWrapper.groupBy(“user_name”);//group by user_name
orderByAsc排序:ORDER BY 字段 ASCqueryWrapper.orderByAsc(“createTime”);//order by createTime asc
orderByDesc排序:ORDER BY 字段 DESCqueryWrapper.orderByDesc(“createTime”);//order by createTime desc
orderBy排序:ORDER BY 字段queryWrapper.orderBy(true, true, “createTime”);//order by createTime asc
or拼接 OR说明:主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接);queryWrapper.eq(“id”, “1”).or().eq(“user_name”, “张三”); //id = 1 or name =‘张三’
and拼接 ANDqueryWrapper.eq(“id”, “1”).and(i->i.eq(“user_name”, “张三”)); //id = 1 and name =‘张三’
apply拼接 sql

说明: 该方法可用于数据库函数动态入参的params;queryWrapper.eq(“id”, user.getId()).apply(“date_format(‘createTime’,‘%Y-%m-%d’) = {0}”,“2023-07-25”);//date_format(‘createTime’,'%Y-%m-%d) =‘2023-07-25’")

last无视优化规则直接拼接到 sql 的最后说明:只能调用一次,多次调用以最后一次为准 有sq1注入的风险,请谨慎使用queryWrapper.last(" limit 1");// limit 1
exists拼接 EXISTS(sql语句)

queryWrapper.exists(“SELECT id FROM Student WHERE User.id = Student.userId”);// exists (“SELECT id FROM Student WHERE User.id = Student.userId”)

notExists拼接 NOT EXISTS (sg1语句)

queryWrapper.notExists(“SELECT id FROM Student WHERE User.id = Student.userId”);// not exists (“SELECT id FROM Student WHERE User.id = Student.userId”)

nested正常嵌套不带 AND或者 ORqueryWrapper.nested(i->i.eq(“id”,“1”).eq(“user_name”,“张三”));// id = 1 and user_name=“张三”
havinghaving ( sql语句)queryWrapper.having(“sum(age) > {0}”,10);//having sum(age) > 10;

常用操作

1.插入

@Override
public void save(User user) {
    userMapper.insert(user);
}

2.根据id更新

userMapper.updateById(user);

3.获取列表

userMapper.selectList(queryWrapper);

4.获取单挑数据

userMapper.selectOne(queryWrapper);

5.根据id获取

@Override
public User getById(String id) {
    return userMapper.selectById(id);
}

6.删除

@Override
public void removeById(String id) {
    userMapper.deleteById(id);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值