数据库操作
niucloud常规数据库操作采用MyBatis-Plus,MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。针对联表查询使用MyBatis-Plus-Join,MyBatis-Plus-Join是一个基于MyBatis-Plus的多表查询扩展库。它通过提供简洁的API和强大的查询构建器,极大地简化了多表关联查询的复杂性。无论是简单的连表查询还是复杂的一对一、一对多查询,MyBatis-Plus-Join都能提供优雅的解决方案。本节重点讲解基本的数据库增删改查操作,然后下一节数据查询,单独讲解查询方法。
关于MyBatis-Plus的优势以及常用方法可以查看MyBatis-Plus手册。下面针对niucloud中常用数据的增删改查进行讲解。
数据表mapper继承Mybatis-Plus的BaseMapper,也可以继承Mybatis-Plus-Join的MPJBaseMapper,一般为了后期联表查询方便使用MPJBaseMapper,例如
package com.niu.shop.mapper.goods;
import com.github.yulichang.base.MPJBaseMapper;
import com.niu.shop.entity.goods.ShopGoodsBrand;
import org.apache.ibatis.annotations.Mapper;
/**
* 商品品牌 Mapper
*/
@Mapper
public interface ShopGoodsBrandMapper extends MPJBaseMapper<ShopGoodsBrand> {
}
数据添加使用insert方法,注意saas系统站点id不是实际参数传入的,而是通过RequestUtil获取siteId。例如下面商品品牌添加
/**
* 商品品牌添加
*
* @param addParam 参数
*/
@Override
public void add(ShopGoodsBrandParam addParam) {
Long count = shopGoodsBrandMapper.selectCount(new QueryWrapper<ShopGoodsBrand>()
.eq("brand_name", addParam.getBrandName())
.eq("site_id", RequestUtils.siteId()));
if (count > 0) throw new CommonException("品牌已存在");
ShopGoodsBrand model = new ShopGoodsBrand();
model.setSiteId(RequestUtils.siteId());
model.setBrandName(addParam.getBrandName());
model.setLogo(addParam.getLogo());
model.setDesc(addParam.getDesc());
model.setSort(ObjectUtil.isNotEmpty(addParam.getSort()) ? Integer.parseInt(addParam.getSort()) : 0);
model.setCreateTime(System.currentTimeMillis() / 1000);
shopGoodsBrandMapper.insert(model);
}
数据编辑使用update方法,如果传入主键id编辑使用updateById方法,例如商品品牌编辑部分
public void edit(Integer id, ShopGoodsBrandParam editParam) {
ShopGoodsBrand model = shopGoodsBrandMapper.selectOne(
new QueryWrapper<ShopGoodsBrand>()
.eq("brand_id", id)
.eq("site_id", RequestUtils.siteId()));
Assert.notNull(model, "品牌不存在!");
model.setBrandName(editParam.getBrandName());
model.setLogo(editParam.getLogo());
model.setDesc(editParam.getDesc());
model.setSort(ObjectUtil.isNotEmpty(editParam.getSort()) ? Integer.parseInt(editParam.getSort()) : 0);
model.setUpdateTime(System.currentTimeMillis() / 1000);
shopGoodsBrandMapper.updateById(model);
}
数据删除使用delete方法,一般单条删除,传入主键,或者对应条件。例如商品品牌删除
public void del(Integer id) {
shopGoodsBrandMapper.delete(new QueryWrapper<ShopGoodsBrand>().eq("brand_id", id).eq("site_id", RequestUtils.siteId()));
}
数据列表分为分页列表查询以及常规列表查询,注意分页列表返回数据结构PageResult,常规列表直接使用查询的列表即可,关于连表 查询以及查询构造器下节讲解,下面是商品品牌分页列表以及常规列表代码
/**
* 商品品牌分页列表
*
* @param pageParam 分页参数
* @param searchParam 搜索参数
* @return PageResult<ShopGoodsBrandListVo>
*/
@Override
public PageResult<ShopGoodsBrandListVo> page(PageParam pageParam, ShopGoodsBrandSearchParam searchParam) {
Integer page = pageParam.getPage();
Integer limit =pageParam.getLimit();
QueryWrapper<ShopGoodsBrand> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("site_id", RequestUtils.siteId());
if (ObjectUtil.isNotEmpty(searchParam.getBrandName())) queryWrapper.like("brand_name", searchParam.getBrandName());
queryWrapper.orderByDesc("brand_id");
IPage<ShopGoodsBrand> iPage = shopGoodsBrandMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<ShopGoodsBrandListVo> list = new LinkedList<>();
for (ShopGoodsBrand item : iPage.getRecords()) {
ShopGoodsBrandListVo vo = new ShopGoodsBrandListVo();
BeanUtils.copyProperties(item, vo);
list.add(vo);
}
return PageResult.build(page, limit, iPage.getTotal()).setData(list);
}
/**
* 商品品牌列表
*
* @param searchParam 搜索参数
* @return PageResult<ShopGoodsBrandListVo>
*/
@Override
public List<ShopGoodsBrandListVo> list(ShopGoodsBrandSearchParam searchParam) {
QueryWrapper<ShopGoodsBrand> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("site_id", RequestUtils.siteId());
if (ObjectUtil.isNotEmpty(searchParam.getBrandName())) queryWrapper.like("brand_name", searchParam.getBrandName());
queryWrapper.orderByDesc("brand_id");
List<ShopGoodsBrand> record = shopGoodsBrandMapper.selectList(queryWrapper);
List<ShopGoodsBrandListVo> list = new LinkedList<>();
for (ShopGoodsBrand item : record) {
ShopGoodsBrandListVo vo = new ShopGoodsBrandListVo();
BeanUtils.copyProperties(item, vo);
list.add(vo);
}
return list;
}