关于 mybatis-plus 的使用,以前都是在 xxxServiceImpl 中注入 xxxMapper,在方法里去调用 xxxMapper的方法,无论是在 xxxMapper 中自定义的方法,还是 xxxMapper 所继承的 BaseMapper 里自带的方法。
@Service
public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset>
implements AssetService {
@Resource
private AssetMapper assetMapper;
@Override
public List<Asset> assetStat(String userAccount) {
QueryWrapper<Asset> queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id",userAccount);
List<Asset> assets = assetMapper.selectList(queryWrapper);
return assets;
}
}
突然发现 xxxServiceImpl 所继承的 ServiceImpl 中自带了基础的增删改查方法,除了方法名和 BaseMapper 里的有些不同,功能都大致相同。
查看源码,会发现在 ServiceImpl 类中 注入了 泛型的 baseMapper,方法里调用的就是 baseMapper 的方法。ServiceImpl 就相当于 在 baseMapper 的基础上封装了一层(?),另外新增了一些其他方法。
所以如果要在 xxxServiceImpl 中调用最基础的增删改查方法,直接在方法里写 this.method() 即可,无需注入 xxxMapper 去调用 xxxMapper的方法。
@Service
public class AssetServiceImpl extends ServiceImpl<AssetMapper, Asset>
implements AssetService {
@Override
public List<Asset> assetStat(String userAccount) {
QueryWrapper<Asset> queryWrapper = new QueryWrapper();
queryWrapper.eq("user_id",userAccount);
List<Asset> assets = this.list(queryWrapper);
return assets;
}
}
对于复杂的 sql 语句,可在 xxxMapper 类对应的 xxxMapper.xml 文件中写好 sql 语句,在 xxxMapper 类中写好对应方法,再去 xxxService 接口中定义对应方法,去 xxxServiceImpl 类中实现该方法,注入 xxxMapper,调用 xxxMapper的自定义方法。