文章目录
- MyBatisPlus实现增删改查
- 1. 插入数据insert
- 2. 更新数据update
- 2.1 根据Id更新操作
- 3. 查询数据select
- 3.1 根据id查询记录
- 3.2 通过多个id批量查询
- 3.3 简单的条件查询
- 3.4 分页查询
- 1. 创建配置类
- 2. 测试selectPage分页
- 3.测试selectMapsPage分页
- 3.5 其它查询
- 4. 删除数据delete
- 4.1 根据id删除记录
- 4.2 批量删除
- 4.3 简单的条件查询删除
- 4.4 配置逻辑删除
- ☆
MyBatisPlus实现增删改查
1. 插入数据insert
主键生成策略我们使用默认的ID_WORKER或ID_WORKER_STR策略userMapper
@RunWith(SpringRunner.class)
@SpringBootTest
public class CRUDTests {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert(){
User user = new User();
user.setName("HeMiao2");
user.setAge(28);
user.setEmail("55317332@qq.com");
int result = userMapper.insert(user);
// 影响的行数
System.out.println(result);
// id自动回填
System.out.println(user);
}
}
注意:数据库插入id值默认为:全局唯一id
2. 更新数据update
2.1 根据Id更新操作
注意:update时生成的sql自动是动态sql:UPDATE user SET age=? WHERE id=?
@Test
public void testUpdateById(){
User user = new User();
user.setId(1L);
user.setAge(48);
int result = userMapper.updateById(user);
System.out.println(result);
}
3. 查询数据select
3.1 根据id查询记录
/**
* 根据id查询记录
*/
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println("user = " + user);
}
3.2 通过多个id批量查询
完成了动态sql的foreach的功能
/**
* 通过多个id批量查询
*/
@Test
public void testSelectBatchIds(){
List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
}
3.3 简单的条件查询
通过map封装查询条件
注意:
- map中的key对应的是数据库中的列名。例如数据库user_id,实体类是userId,这时map的key需要填写user_id
/**
* 通过map封装查询条件
*/
@Test
public void testSelectByMap(){
Map<String,Object> map = new HashMap<>();
// map.put("name","Helen");
map.put("age",28);
List<User> users = userMapper.selectByMap(map);
// forEach遍历
users.forEach(System.out::println);
}
3.4 分页查询
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
1. 创建配置类
此时可以删除主类中的 @MapperScan扫描注解,把它移到配置类MyBatisPlusConfig中。
/**
* @Date 2020/4/10 22:53
* @Version 10.21
* @Author DuanChaojie
*/
@Configuration
@EnableTransactionManagement
@MapperScan("cn.justweb.mybatisplus.mapper")
public class MyBatisPlusConfig {
/**
* 乐观锁插件
* @return
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor(){
return new OptimisticLockerInterceptor();
}
/**
* 分页插件
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
2. 测试selectPage分页
测试:最终通过page对象获取相关数据
控制台sql语句打印:SELECT id,name,age,email,create_time,update_time FROM user LIMIT 0,5
@Test
public void testSelectPage(){
Page<User> page = new Page<>(1, 5);
userMapper.selectPage(page,null);
System.out.println("分页查找的内容:");
page.getRecords().forEach(System.out::println);
// 当前页
System.out.println("page.getCurrent() = " + page.getCurrent());
// 总页数
System.out.println("page.getPages() = " + page.getPages());
// 每页个数
System.out.println("page.getSize() = " + page.getSize());
// 总记录数
System.out.println("page.getTotal() = " + page.getTotal());
//
System.out.println("page.hasPrevious() = " + page.hasPrevious());
}
3.测试selectMapsPage分页
- 结果集是Map
@Test
public void testSelectMapsPage() {
Page<User> page = new Page<>(1, 5);
IPage<Map<String, Object>> mapIPage = userMapper.selectMapsPage(page, null);
//注意:此行必须使用 mapIPage 获取记录列表,否则会有数据类型转换错误
mapIPage.getRecords().forEach(System.out::println);
System.out.println(page.getCurrent());
System.out.println(page.getPages());
System.out.println(page.getSize());
System.out.println(page.getTotal());
System.out.println(page.hasNext());
System.out.println(page.hasPrevious());
}
3.5 其它查询
如果想进行复杂条件查询,那么需要使用条件构造器 Wapper,涉及到如下方法
- delete
- selectOne
- selectCount
- selectList
- selectMaps
- selectObjs
- update
4. 删除数据delete
4.1 根据id删除记录
/**
* 根据id删除记录
*/
@Test
public void testDeleteById(){
int result = userMapper.deleteById(1L);
System.out.println("result = " + result);
}
4.2 批量删除
/**
* 根据ids批量删除
*/
@Test
public void testDeleteBatchIds(){
int result = userMapper.deleteBatchIds(Arrays.asList(2L, 3L));
System.out.println("result = " + result);
}
4.3 简单的条件查询删除
/**
* 简单的条件查询删除
*/
@Test
public void testDeleteByMap(){
Map<String,Object> map = new HashMap<>();
map.put("name","Helen");
map.put("age",18);
int result = userMapper.deleteByMap(map);
System.out.println("result = " + result);
}
4.4 配置逻辑删除
后面会再讲
☆