mybatis-plus基础知识

在这里插入图片描述

数据库级别

在这里插入图片描述

在这里插入图片描述

代码级别

在这里插入图片描述

在这里插入图片描述

编写处理器来处理注解

这样的话,在执行插入和更新操作时,会将数据的updateTime和inserTime字段的值进行自动插入和更新

/*

如果不想每次都写private

final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;

  • */

@Slf4j

@Component

public class MyMetaHandler implements MetaObjectHandler {

// 插入时的策略

@Override

public void insertFill(MetaObject metaObject) {

log.info(“start inserfill…”);

this.setFieldValByName(“createTime”,new Date(),metaObject);

this.setFieldValByName(“updateTime”,new Date(),metaObject);

}

//更新时的策略

@Override

public void updateFill(MetaObject metaObject) {

log.info(“start updatefill…”);

this.setFieldValByName(“updateTime”,new Date(),metaObject);

}

}

乐观锁处理


编写Configuration配置类

@Configuration

public class mybatisplusConfig {

// 注册乐观锁插件

@Bean

public OptimisticLockerInterceptor optimisticLockerInterceptor(){

return new OptimisticLockerInterceptor();

}

}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模拟线程插队的更新操作

User user=userMapper.selectById(8); //version=2

user.setUser(“kuangsheng”);

// 模拟插队线程的操作

User user1=userMapper.selectById(8);

user1.setUser(“kuangsheng111”);

userMapper.updateById(user1); //version=3

/*

下面这句查询其实为 select* from user where version =2

(但数据库并没有version=2的数据,所以就会导致更细失败!)

因为上面的操作将version变成3了,这就是乐观锁的机制

*/

int count=userMapper.updateById(user); //如果没有乐观锁,则改端代码的结果会 覆盖 插队线程的操作

查询操作


批量查询

List userList=userMapper.selectBatchIds(Arrays.asList(1,2,3));

userList.forEach(System.out::println);

多条件查询

Map<String,Object> map=new TreeMap<>();

map.put(“user”,“李福”);

List userList= userMapper.selectByMap(map);

System.out.println(userList);

分页查询

1.配置拦截器组件

// 配置分页插件

@Bean

public PaginationInterceptor paginationInterceptor() {

PaginationInterceptor paginationInterceptor = new PaginationInterceptor();

paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));

return paginationInterceptor;

}

测试

//curren:当前页 size:每页数据条数

Page page=new Page<>(1,5);

userMapper.selectPage(page,null);

List userList=page.getRecords();

userList.forEach(System.out::println);

}

删除操作


在这里插入图片描述

单个删除

int count=userMapper.deleteById(7);

if (count>0){

System.out.println(“删除成功!!!”);

}

批量删除

int count=userMapper.deleteBatchIds(Arrays.asList(5,6));

if (count>0){

System.out.println(“批量删除成功!!!”);

}

通过map删除

Map<String,Object> map=new HashMap<>();

map.put(“user”,“liifu”);

map.put(“user”,“cyh”);

int count=userMapper.deleteByMap(map);

if(count>0){

System.out.println(“删除成功!!”);

}

逻辑删除

在这里插入图片描述

1.数据库增加一个deleted字段

2.pojo类增加对应deleted字段

@TableLogic

private int deleted; // 0:未删除 1:删除

3.编写Config配置

注意:3.3.1开始不在需要这一步了

在这里插入代码片

4.配置文件(application.yml)

#配置日志

mybatis-plus:

configuration:

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

#逻辑删除

global-config:

db-config:

logic-delete-value: 1 #即删除为1

logic-not-delete-value: 0 #未删除为0

测试

int count=userMapper.deleteById(4);

if (count>0){

System.out.println(“删除成功!!!”);

}

在这里插入图片描述

删除后再次查询(看能否查出该数据)

在这里插入图片描述

性能分析插件


平时查询sql语句时可能会遇见一些查询比较耗时的操作。而mybatis-plus提供了性能分析插件(当超过某个时间,他就会停止执行)

在这里插入图片描述

先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以扫码领取!

img

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性

Java面试宝典2021版

最常见Java面试题解析(2021最新版)

2021企业Java面试题精选

-community.csdnimg.cn/images/e5c14a7895254671a72faed303032d36.jpg" alt=“img” style=“zoom: 33%;” />

最后

光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的增加文章的篇幅,减少文章的可读性

Java面试宝典2021版

[外链图片转存中…(img-HbmyceGw-1711400997933)]

[外链图片转存中…(img-cToqscDy-1711400997933)]

最常见Java面试题解析(2021最新版)

[外链图片转存中…(img-YyYN8AOp-1711400997933)]

[外链图片转存中…(img-lNapLUB9-1711400997933)]

2021企业Java面试题精选

[外链图片转存中…(img-5E25QEon-1711400997934)]

[外链图片转存中…(img-j54MKPNr-1711400997934)]

需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值