主键生成的策略有哪几种方式?
不同的表应用不同的id生成策略
名称:@TableId
类型:属性注解
位置:模型类中用于表示主键的属性定义上方
作用:设置当前类中主键属性的生成策略
相关属性
type:设置主键属性的生成策略,值参照IdType枚举值
xxxxxxxxxx
mybatis-plus global-config db-config id-typeassign_id table-prefixtbl_


MyBatisPlus是否支持批量操作?
xxxxxxxxxx
//删除指定多条数据List<Long> list = new ArrayList<>();list.add(1402551342481838081L);list.add(1402553134049501186L);list.add(1402553619611430913L);userDao.deleteBatchIds(list);
xxxxxxxxxx
//查询指定多条数据List<Long> list = new ArrayList<>();list.add(1L);list.add(3L);list.add(4L);userDao.selectBatchIds(list);
在实际环境中,如果想删除一条数据,是否会真的从数据库中删除该条数据?
xxxxxxxxxx
package com.itheima.domain;import com.baomidou.mybatisplus.annotation.*;import lombok.Data;public class User { private Long id; //逻辑删除字段,标记当前记录是否被删除 private Integer deleted; }
xxxxxxxxxx
mybatis-plus global-config db-config table-prefixtbl_ # 逻辑删除字段名 logic-delete-fielddeleted # 逻辑删除字面值:未删除为0 logic-not-delete-value0 # 逻辑删除字面值:删除为1 logic-delete-value1
逻辑删除本质:逻辑删除的本质其实是修改操作。如果加了逻辑删除字段,查询数据时也会自动带上逻辑删除字段。
乐观锁主张的思想是什么?
xxxxxxxxxx
package com.itheima.domain;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableLogic;import com.baomidou.mybatisplus.annotation.Version;import lombok.Data;public class User { private Long id; private Integer version;}
xxxxxxxxxx
package com.itheima.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;public class MpConfig { public MybatisPlusInterceptor mpInterceptor() { //1.定义Mp拦截器 MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor(); //2.添加乐观锁拦截器 mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return mpInterceptor; }}
xxxxxxxxxx
public void testUpdate() { /*User user = new User(); user.setId(3L); user.setName("Jock666"); user.setVersion(1); userDao.updateById(user);*/ //1.先通过要修改的数据id将当前数据查询出来 //User user = userDao.selectById(3L); //2.将要修改的属性逐一设置进去 //user.setName("Jock888"); //userDao.updateById(user); //1.先通过要修改的数据id将当前数据查询出来 User user = userDao.selectById(3L); //version=3 User user2 = userDao.selectById(3L); //version=3 user2.setName("Jock aaa"); userDao.updateById(user2); //version=>4 user.setName("Jock bbb"); userDao.updateById(user); //verion=3?条件还成立吗?}