赞
踩
实体类设计:
public class TbSpecification implements Serializable {
private Long id;
private String specName;
规格项表:
实体类设计:
public class TbSpecificationOption implements Serializable {
private Long id;
private String optionName;
private Long specId;
private Integer orders;
**规格表 --> 规格项表,两张表是一对多的关联关系(注意:表结构中没有设置主外键关联,对于数据库的所有外键的每次插入、更新和删除后,进行完整性检查是一个耗费时间和资源的过程,它可能影响性能)。**
* 规格和规格项组合类
*/
public class Specification implements Serializable {
// 规格
private TbSpecification tbSpecification;
// 多个规格项
private List<TbSpecificationOption> tbSpecificationOptionList;
* 保存 * @param specification */ @Override public void save(Specification specification) { // 先保存规格 TbSpecification tbSpecification = specification.getTbSpecification(); tbSpecificationMapper.insert(tbSpecification); // 获取到规格生成的主键值,给规格项添加进去 Long id = tbSpecification.getId(); // 再保存规格项 List<TbSpecificationOption> list = specification.getTbSpecificationOptionList(); // 遍历,保存 for (TbSpecificationOption tbSpecificationOption : list) { // 设置外键值 tbSpecificationOption.setSpecId(id); // 保存 tbSpecificationOptionMapper.insert(tbSpecificationOption); }
<selectKey keyProperty="id" resultType="long" keyColumn="id">
select last_insert_id()
</selectKey>
mapper接口需要添加这一段,把id返回给对象
* 逻辑:返回的是组合数据,先查规格,再查规格项 */ @Override public Specification findOne(Long id) { // 先查规格 TbSpecification tbSpecification = tbSpecificationMapper.selectByPrimaryKey(id); // 再查规格项 // 创建查询条件 TbSpecificationOptionExample example = new TbSpecificationOptionExample(); TbSpecificationOptionExample.Criteria criteria = example.createCriteria(); // 按外键查询 criteria.andSpecIdEqualTo(id); // 查询数据 List<TbSpecificationOption> list = tbSpecificationOptionMapper.selectByExample(example); // 封装数据 Specification specification = new Specification(); specification.setTbSpecification(tbSpecification); specification.setTbSpecificationOptionList(list); return specification; }
* 逻辑:修改规格数据,规格项:先删除,再添加 */ @Override public void update(Specification specification) { // 修改规格数据 tbSpecificationMapper.updateByPrimaryKey(specification.getTbSpecification()); // 删除规格项 TbSpecificationOptionExample example = new TbSpecificationOptionExample(); example.createCriteria().andSpecIdEqualTo(specification.getTbSpecification().getId()); tbSpecificationOptionMapper.deleteByExample(example); // 添加规格项 List<TbSpecificationOption> list = specification.getTbSpecificationOptionList(); // 遍历,添加 for (TbSpecificationOption tbSpecificationOption : list) { tbSpecificationOption.setSpecId(specification.getTbSpecification().getId()); // 保存 tbSpecificationOptionMapper.insert(tbSpecificationOption); } }
* 逻辑:先删除规格,再删除规格项
*/
@Override
public void delete(Long[] ids) {
// 遍历删除
for (Long id : ids) {
// 删除规格
tbSpecificationMapper.deleteByPrimaryKey(id);
// 再删除规格项
TbSpecificationOptionExample example = new TbSpecificationOptionExample();
example.createCriteria().andSpecIdEqualTo(id);
tbSpecificationOptionMapper.deleteByExample(example);
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。