MybatisPlus常用操作

常用注解

@TableName 指定当前实体对应表

@TableField 指定当前属性映射的列

@TableField(exist = false) 表示当前属性不参与映射(不参与sql拼接)

@TableId(type = IdType = Auto)

如果不对id做任何配置操作,mybatis-plus id 会自动使用雪花算法创建一个唯一的long 类型数据作为id主键

@TableLogic 逻辑删除

通用Mapper接口

日志

mybatisplus.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl

insert

与mybatis逻辑相同

update

updateById存在问题,mybatis-plus 的SQL拼接规则导致

mybatis-plus 在拼接SQL时,如果传入的是实体对象,mybatis-plus会判断属性值是否为null,如果为null;该属性不参与SQL拼接

mybatis-plus 在拼接SQL时,如果传入的是实体对象,而属性是基本类型,有默认值,mybatis-plus会认为他有值,该属性参与SQL拼接

解决方案:

1.使用基本类型的包装类型

2.先查,替换属性,在更新

3.使用update(null,wrapper)实现部分字段更新

UpdateWrapper<Employee> wrapper = new UpdateWrapper<>();
wrappper.eq("id",1L);
wrapper.set("name","testName")
xxxMapper.update(null,wrapper);

updateById 和 update 区别

updateById

1.更新条件是id时

2.所有字段更新时

update

1.更新条件不仅仅是id时

2.部分字段更新时

delete

deleteByid() 和 mybatis中类似

deleteBatchIds() 传入集合进行批量删除

对应SQL delete FROM tableName where id in (?,?)

deleteByMap() 传入Map进行条件删除 key 条件列名。value条件值

对应SQL delete FROM tableName where key1 = value1 and key2 = value2....

delete() 传入条件构造器 进行条件删除Wrapper

对应SQL delete FROM tableName where (column1= value1 and column2= value2...)

select

selectById() 传入id进行查找

selectBatchIds() 传入id集合进行查找 返回值为List集合类型

selectByMap() 传入map进行条件查找 key 条件列名 value条件值 返回值为List集合类型

selectCount() 传入条件构造器QueryWrapper 进行条件查找,返回值为Integer

selectList() 传入条件构造器 返回值为List

selectMaps() 传入条件构造器,返回值为List<Map>

selectList() 和 selectMaps()区别

当查询结果无法封装成对象时(列多了或少了),使用selectMaps()

selectPage(page,wrapper)默认不开启分页,要先配置分页拦截器,编写分页逻辑new Page<>(currentPage,size);返回值为page把查询到的数据封装到传入的page里面(与之前new的page是同一个对象)

条件构造器

用于生成sql中的where条件

准确的说可以理解为Mybatis的动态sql,类似于mybatis中的<sql></sql>

继承体系

QueryWrapper和UpdateWrapper都继承于AbstractWrapper

LambdaQueryWrapper和LambdaUpdateWrapper继承于AbstractLambdaWrapper继承于AbstractWrapper

更新操作

eq(column,value)条件列名和条件值

set(column,value) 修改列名和修改值

setSql(sql语句) 例如“name = ‘xxx’ ”省去预编译,直接插入sql语句执行

LambdaUpdate

wrapper.eq(Object::getXx,value)可以在编译时检查条件列名是否出错

查询操作

类似以上更新操作

Wrappers

QueryWrapper<Xxx> wrapper = Wrappers.<Xxx>query();

高级查询

列投影

wrapper.select(String...columns);

排序

wrapper.orderBy()

wrapper.orderByAsc()

wrapper.orderByDesc()

分组查询

wrapper.groupBy();

使用前一定要用wrapper.select()规定查询的列

注意:select语句中使用group by只能查询分组列和聚合函数(如count())

wrapper.having(sqlHaving,Object..parms)Object..parms表示占位符,可不写

条件查询

比较运算符

wrapper.allEq()

模糊查询

wrapper.like(column,val)

wrapper.likeLeft()

wrapper.likeRIght

自定义查询

1.xml方式

2.注解方式

通用service

public interface IXxxService extends IService<Xxx>(){}

public class XxxServiceImpl extends ServiceImpl<XxxMapper,Xxx> implements IXxxService{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值