mybatisplusiservice是一个为了简化开发的Mybatis-plus的扩展服务,它提供了很多常用的CRUD方法,使得开发者不必写重复的代码,而且还可以方便地进行分页操作。本文将从以下几个方面逐一深入探究mybatisplusiservice。
一、mybatisplusiservice的基本使用
使用mybatisplusiservice非常简单,只需要在Service层中继承IService接口即可。例如:
@Service public class UserServiceImpl extends ServiceImpl implements IUserService { }
这里UserService继承ServiceImpl实现了IUserService接口,并指定了实体类User和Mapper类UserMapper。此时,UserService类即继承了mybatisplusiservice的所有方法。
我们来看一个简单的示例代码:
@Service public class UserServiceImpl extends ServiceImpl implements IUserService {
@Autowired UserMapper userMapper;
public List selectAll() {
return userMapper.selectList(null);
}
}
可以发现,selectList是mybatisplusiservice中提供的方法之一,它可以非常方便地实现基础查询操作,而且不用写SQL,只需要传入null即可返回所有实体。当然,mybatisplusiservice也提供诸如selectById、 insert等其他基础操作方法,使用方法与此类似。
二、mybatisplusiservice的分页操作
分页是一个常见的操作需求,mybatisplusiservice也为我们提供了很方便的分页API。以Service层的查询方法为例:
public IPage selectPage(Page page) {
return userMapper.selectPage(page, null);
}
在这个方法中,我们使用了mybatisplusiservice提供的selectPage分页方法,并传入了分页查询的参数Page实例。Page实例中包含了分页参数和排序参数,直接传入mapper即可实现分页查询。
而在调用分页查询方法时,我们只需要根据需求设置Page实例中的参数即可。例如:
Page page = new Page();
page.setCurrent(1); //当前页
page.setSize(20); //每页大小
page.setDesc("create_time"); //按照创建时间降序排列
IPage userIPage = userService.selectPage(page);
List users = userIPage.getRecords();
这样,我们就可以得到第一页20条数据,并按照创建时间降序排列。
三、mybatisplusiservice的条件构造器
条件构造器是mybatisplusiservice中非常重要的一部分。它可以帮助我们根据实体类字段直接构造查询条件,避免手写SQL,从而提高开发效率。
以查询指定时间区间内创建的用户为例:
public List selectByCreateTimeBetween(LocalDateTime start, LocalDateTime end) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper();
wrapper.between(User::getCreateTime, start, end);
return userMapper.selectList(wrapper);
}
在这个方法中,我们使用了LambdaQueryWrapper构造器来构造查询条件。between方法的第一个参数是User实体类中的属性,第二个和第三个参数分别是时间区间的开始和结束时间。而selectList方法则是mybatisplusiservice提供的查询方法,它接收一个前面构造的LambdaQueryWrapper构造器作为参数。
其中,LambdaQueryWrapper构造器提供了大量的操作方法,例如eq等值查询、ge、gt等比较查询、in、notIn、like等集合查询以及自定义SQL查询等等,十分方便实用。
四、mybatisplusiservice的自动填充机制
自动填充机制是mybatisplusiservice中的一项高级功能。使用这个机制,我们可以自动填充数据库中的某些字段,例如create_time、update_time,而不需要手动设置。
首先,在实体类中使用mybatisplusiservice的注解@TableField标注需要自动填充的字段,例如:
@Data @TableName("tbl_user") public class User {
@TableId(type = IdType.AUTO) private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT) private LocalDateTime createTime;
@TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime;
}
在这个示例代码中,我们使用@TableField注解标识了createTime和updateTime两个字段需要自动填充。填充方式分别是INSERT和UPDATE,表示创建时自动填充和更新时自动填充。
在编写Mapper时,我们只需要使用mybatisplusiservice提供的BaseMapper接口,并在实体类中设置了@TableField注解之后,就可以对以上标有@TableField注解的字段进行自动填充。例如:
@Component public interface UserMapper extends BaseMapper { }
这样,我们就可以在数据库中自动填充createTime和updateTime两个字段了。
五、小结
mybatisplusiservice提供了多项方便实用的开发功能,包括基础的CRUD操作、分页查询、条件构造器和自动填充机制等。在实际开发中,使用mybatisplusiservice可以大幅提升开发效率,减少重复的代码编写,同时提供了很方便的扩展接口。
原创文章,作者:ZZNYR,如若转载,请注明出处:https://www.506064.com/n/369229.html