mybatis-plus基础知识

User user=new User();

user.setUser(“yang yang”);

user.setAge(23);

user.setPass(“123”);

user.setSex(“man”);

user.setId(6);

// 注意:这里的updateById方法的参数是一个对象

int count=userMapper.updateById(user);

System.out.println(count);

}

自动填充


在这里插入图片描述

数据库级别

在这里插入图片描述

在这里插入图片描述

代码级别

在这里插入图片描述

在这里插入图片描述

编写处理器来处理注解

这样的话,在执行插入和更新操作时,会将数据的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提供了性能分析插件(当超过某个时间,他就会停止执行)

在这里插入图片描述

条件查询器Wrapper


适用于写一些执行复杂查询的sql语句

QueryWrapper queryWrapper=new QueryWrapper<>();

// 查询 age>=21 sex=“man” version=1 的信息

queryWrapper.ge(“age”,21).eq(“sex”,“man”).eq(“version”,1);

List userList =userMapper.selectList(queryWrapper);

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

在这里插入图片描述

区间查询

QueryWrapper wrapper=new QueryWrapper<>();

// 区间查询

wrapper.between(“age”,21,23);

int count=userMapper.selectCount(wrapper);

System.out.println(count);

查询结果数(即符合条件的条数)

QueryWrapper wrapper=new QueryWrapper();

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

image
6bif54yq54yq5L6geXk=,size_20,color_FFFFFF,t_70,g_se,x_16)

区间查询

QueryWrapper wrapper=new QueryWrapper<>();

// 区间查询

wrapper.between(“age”,21,23);

int count=userMapper.selectCount(wrapper);

System.out.println(count);

查询结果数(即符合条件的条数)

QueryWrapper wrapper=new QueryWrapper();

最后

现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**

[外链图片转存中…(img-s4HJcwgE-1719283753681)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值