这是我参与更文挑战的第8天,活动详情查看: 更文挑战
CRUD
上一篇入门我们查到了 user表的所有内容
Delete
// 根据 entity 条件,删除记录
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
// 删除(根据ID 批量删除)
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
// 根据 ID 删除
int deleteById(Serializable id);
// 根据 columnMap 条件,删除记录
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
根据id删除
@Test
public void testDelect(){
userMapper.deleteById(1);
}
根据id批量删除
@Test
public void testDelectArr(){
userMapper.deleteBatchIds(Arrays.asList(2,3));
}
查看后台执行的日志看到是in删除了两个
再看数据库
根据map删除
删除名字叫sandyde
@Test
public void testDelectmap(){
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("name","Sandy");
userMapper.deleteByMap(objectObjectHashMap);
}
update
// 根据 whereWrapper 条件,更新记录
int update(@Param(Constants.ENTITY) T updateEntity, @Param(Constants.WRAPPER) Wrapper<T> whereWrapper);
// 根据 ID 修改
int updateById(@Param(Constants.ENTITY) T entity);
根据id修改
更新id为5的年龄1000岁
@Test
public void updateByid(){
User user = new User();
user.setId(5L);
user.setAge(1000);
userMapper.updateById(user);
}
select
我们在执行下之前的脚本 加几条数据
//根据id查找
@Test
public void selectByid(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
//根据v多个id查找
@Test
public void selectByidS(){
List<User> users = userMapper.selectBatchIds(Arrays.asList(2L, 3L, 1L));
for (User user : users) {
System.out.println(user);
}
}
//根据map条件查找
@Test
public void SelectByBatchIds(){
HashMap<String, Object> objectObjectHashMap = new HashMap<>();
objectObjectHashMap.put("name","Sandy");
List<User> users = userMapper.selectByMap(objectObjectHashMap);
for (User user : users) {
System.out.println(user);
}
}
分页查询
配置拦截器
//Spring boot方式
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
}
测试类
@Test
public void selectPage(){
//当前页,也页面大小
Page<User> objectPage = new Page<>(2,2);
Page<User> userPage = userMapper.selectPage(objectPage, null);
for (User record : userPage.getRecords()) {
System.out.println(record);
}
}
看控制台输出和日志语句 其实也是根据limit来查的
insert
// 插入一条记录
int insert(T entity);
@Test
public void test1(){
User user = new User();
user.setAge(12);
user.setEmail("100000000@qq.com");
user.setName("里斯");
userMapper.insert(user);
}
查看数据库 新增成功
我们插入的时候其实是没有写id的 自动生成了一个 很长的id,这个就是全局唯一id--雪花算法
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为 毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味 着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯 一!
主键生成策略 uuid,自增id,雪花算法等等
public enum IdType {
AUTO(0),//自增
NONE(1),//未设置
INPUT(2),//手动输入
ASSIGN_ID(3),//雪花算法
ASSIGN_UUID(4);//uuid 全剧唯一