MyBatis-Plus中各单表操作方法的使用(巨细)

前言

众所周知,MyBatis-Plus是对MyBatis的功能的强化,而其较为重要的强化便是BaseMapper类中的各单表操作的方法,极大的改善了对数据库的单表操作,简化了代码,所以对于这些方法的掌握还是很重要的

首先奉上方法预览

public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);

    int deleteById(Serializable id);

    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

    int delete(@Param("ew") Wrapper<T> queryWrapper);

    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    int updateById(@Param("et") T entity);

    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

    T selectById(Serializable id);

    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

    T selectOne(@Param("ew") Wrapper<T> queryWrapper);

    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

    <P extends IPage<T>> P selectPage(P page, @Param("ew") Wrapper<T> queryWrapper);

    <P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param("ew") Wrapper<T> queryWrapper);
}

首先创建一张User表

//User实体类
@Data
public class User {

    @TableId(type = IdType.AUTO)//设置id自增长
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

1.插入操作

public void testInsert(){
	User user = new User();
    user.setName("11");
    user.setAge(21);
    user.setEmail("22@qq.com");
    int result = userMapper.insert(user);//result是方法影响的行数
}

2.更新操作

  • 根据Id更新
public void testUpdate1(){
	User user = new User();
    user.setId(6L);  //更新的条件
    user.setAge(21); //需要更新的字段
    //根据id更新,更新的字段是不为null的字段
    userMapper.updateById(user);
    //该方法会根据id自动去修改除id外被设置的字段的值
}
  • 根据条件更新(QueryWrapper)
public void testUpdate2(){
	User user = new User();
    user.setAge(30); //设置需要更新的字段
    
    //更新的条件
    QueryWrapper<User> wrapper = new QueryWapper<>();
    wapper.eq("id",6);
	
	//执行更新操作
	int result = userMapper.update(user,wrapper);
}
  • 根据条件更新(UpdageWrapper)
public void testUpdate3(){
	//更新的条件以及字段
	UpdateWrapper<User> wrapper = new UpdateWapper<>();
	wrapper.eq("id",6).set("age",23);
	//eq方法里对应的是更新的条件
	//set方法里对应的是更新的字段
	//对应的sql语句为UPDATE user SET age=? WHERE id = ?

	//执行更新操作
	int result = userMapper.update(null,wrapper);
}

3.删除操作

  • 根据id删除
public void testDelete1(){
	int result = userMapper.deleteById(6L);
}
  • 根据组合条件删除
public void testDelete2(){
	Map<String,Object> map = new HashMap<>();
	//设置删除的条件
	map.put("age",20);
	map.put("name","张三");

	//将map中的元素设置为删除的条件,多个元素之间在sql语句中的关系为and
	int result = userMapper.deleteByMap(map);
}
  • 将实体对象包装为操作条件(推荐,因为不需要写字段名称)
public void testDelete3(){
	User user = new User();
	user.setAge(20);
	user.setName("张三");

	//将实体对象进行包装,包装为删除条件
	QueryWrapper<User> wrapper = new QueryWrapper<>(User);

	int result = userMapper.delete(wrapper);
}
  • 根据id集合批量删除
public void testDelete4(){
	int result = userMapper.deleteBatchIds(Arrays.asList(1L,10L,20L));
}

4.查询操作

  • 根据id查询
public void testSelect1(){
	User user = userMapper.selectById(2L);
}
  • 根据id批量查询
public void testSelect2(){
	List<User> userList = userMapper.selectBatchIds(Arrays.asList(2L,3L,10L));
	for(User user : userList){
		System.out.println(user);
	}
}
  • 根据实体条件查询一条记录
public void testSelect4(){
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	wrapper.eq("name","李四");

	//根据条件查询一条数据,如果超过会报错
	User user = userMapper.selectOne(wrapper);
}
  • 根据Wrapper条件查询总记录数
public void testSelect5(){
	QueryWrapper<User> wrapper = new QueryWrapper<>();
	wrapper.gt("age",23); //年龄大于23岁

	//根据条件查询总记录数
	Integer count = userMapper.selectCount(wrapper);
}
  • 根据实体条件,查询全部记录
public void testSelect6(){
	QueryWrapper<User> wrapper = new QueryWrapper<User>();
	wrapper.gt("age",23); //年龄大于23岁

	//根据条件查询数据
	List<User> userList = userMapper.selectList(wrapper);
	for(User user : userList){
		System.out.println(user);
	}
}
  • 根据实体条件查询全部记录,并分页
//首先创建一个配置类,配置分页插件
@Configuration
@MapperScan("mapper路径")
public class MybatisPlusConfig{
	
	@Bean
	public PaginationInterceptor PaginationInterceptor {
		return new PaginationInterceptor();
	}
}
//再进行相应操作
public class UserMapperTest{
	@Resource
	private UserMapper userMapper;

	@Test
	public void testSelect7(){
		QueryWrapper<User> wrapper = new QueryWrapper<User>();
		wrapper.gt("age",23);//条件

		Page<User> page = new Page<>(1,1);
		//这里的1,1是指查询第1页,查询1条数据,即每页1条数据

		//根据条件查询数据
		IPage<User> iPage = userMapper.selectPage(page,wrapper);
	}
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发。在MyBatis-Plus,实现连查询可以通过使用Wrapper(条件构造器)来实现。 下面是使用MyBatis-Plus实现连查询的步骤: 1. 创建Wrapper对象:使用QueryWrapper或者LambdaQueryWrapper来创建一个Wrapper对象,用于构建查询条件。 2. 设置关联:通过调用Wrapper对象的join方法,传入关联名和关联条件,来设置关联。 3. 执行查询:通过调用MyBatis-Plus提供的selectList或者selectPage方法,传入Wrapper对象作为参数,来执行查询操作。 下面是一个示例代码,演示如何使用MyBatis-Plus实现连查询: ```java // 创建Wrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 设置关联 wrapper.join("user_role", "user_role.user_id = user.id") .join("role", "role.id = user_role.role_id") .select("user.id", "user.name", "role.name as roleName"); // 执行查询 List<Map<String, Object>> userList = userMapper.selectMaps(wrapper); ``` 在上面的示例,我们创建了一个QueryWrapper对象,并通过join方法设置了两个关联:user_role和role。然后通过select方法指定了需要查询的字段。最后调用selectMaps方法执行查询,并将结果以List<Map<String, Object>>的形式返回。 注意:这里使用了selectMaps方法来返回结果,可以得到一个包含多个Map对象的List,每个Map对象示一条查询结果,其key为字段名,value为字段值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值