MyBatis-Plus学习笔记
Mybatis-Plus介绍
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高 效率而生。
官网:https://mybatis.plus/ 或 https://mp.baomidou.com/
创建MP项目
根据官网方法,新建项目,导入MP的包即可。
特点
基础的curd很简单
带条件的加上wapper就行
注意:
在mybaits plus插入数据后会自动回填
对于id有一串数据
mybatis plus的主键id生成算法:雪花算法
数据库中的主键一定要设置为自增的
实体类注解的使用
id上加上
@TableId(type = IdType.AUTO)
private Long id;
特定不可用的上加上注解:
@TableField(select = false)
private String password;
和数据库对应不上的字段加上
@TableField("email")
private String mail;
创建时间要加入的注解
@TableField(fill = FieldFill.INSERT)
private Date createTime;
更新时间要加入的注解
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
插入操作
// 测试插入
@Test
public void testInsert(){
User user = new User();
user.setName("张三");
user.setAge(3);
user.setEmail("123456789@qq.com");
int result = userMapper.insert(user); // 帮我们自动生成id
System.out.println(result); // 受影响的行数
System.out.println(user); // 发现,id会自动回填
}
删除操作
// 测试删除
@Test
public void testDeleteById() {
userMapper.deleteById(1240620674645544965L);
}
// 通过id批量删除
@Test
public void testDeleteBatchId() {
userMapper.deleteBatchIds(Arrays.asList(1240620674645544961L, 1240620674645544962L));
}
// 通过map删除
@Test
public void testDeleteMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("name", "张三");
userMapper.deleteByMap(map);
}
一、物理删除
在Mp中,没有指定(配置)逻辑删除时,我们所做的删除都是物理删除。
1、根据Id删除
@Test
public void testDeleteById(){
int result = userMapper.deleteById(5L);
system.out.println(result);
}
2、批量删除
@Test
public void testDeleteBatchIds() {
int result = userMapper.deleteBatchIds(Arrays.asList(8, 9, 10));
system.out.println(result);
}
3、简单的条件删除
使用map构造删除的条件,只能构造等于的关系条件,一般不使用这个,使用wrapper进行
@Test
public void testDeleteByMap() {
HashMap<String, Object> map = new HashMap<>();
map.put("name", "Helen");
map.put("age", 18);
int result = userMapper.deleteByMap(map);
system.out.println(result);
}
逻辑删除
1.在数据库中新建 deleted字段
2、在实体类中添加属性
@TableLogic //逻辑删除
private Integer deleted;
3.在config中配置
// 逻辑删除组件!
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
4.在配置文件中添加配置(application.properties)
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1 # 删除了的用1表示
mybatis-plus.global-config.db-config.logic-not-delete-value=0 # 没删除的用0表示
5.测试
发现删除操作,最终是使用的update语句
普通查询
使用Map
// 测试查询
@Test
public void testSelectById() {
User user = userMapper.selectById(1L);
System.out.println(user);
}
// 测试批量查询!
@Test
public void testSelectByBatchId() {
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
}
// 按条件查询之一使用map操作
@Test
public void testSelectByBatchIds() {
HashMap<String, Object> map = new HashMap<>();
// 自定义要查询
map.put("name", "张三");
map.put("age", 3);
List<User> users = userMapper.selectByMap(map);
users.forEach(System.out::