关于保存接口的java代码(新增,修改)

本文介绍了在Java应用中,如何使用SpringMVC、Repository和Service层实现一个保存分类接口,包括新增、删除和更新操作,以及处理数据重复和事务管理的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

controller:
/**
 * 保存接口(新增和删除)
 */
@PostMapping ("/saveCategory")
public Result saveCategory(@RequestBody BroadScopeSaveDTO dto) {

    broadScopeService.saveCategory(dto);
    return Result.success();
}

传参的dto:

@Data
public class BroadScopeSaveDTO {
    /**
     * 主键
     */

    private Long id;
    /**
     * 类目名称
     */

    private String categoryName;

    /**
     * 排序
     */

    private Long sort;
}
service:
Result saveCategory(BroadScopeSaveDTO dto);
impl:
  /**
     * 保存接口(新增或者删除)
     *
     * @param dto
     * @return
     */

    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result saveCategory(BroadScopeSaveDTO dto) {

        //先判断传来的名字是否是重复的
        long l = broadScopeMapper.countByName(dto.getCategoryName());
        if (l>0){
            //如果重复就报错,该分类已存在
            throw new BusinessException(MessageConstant.CATEGORY_EXISTS);
        }
        //然后判断传来的id是否有值(有修改.无新增)
        if (ObjectUtil.isNull(dto.getId())){
            boolean b = broadScopeMapper.insertCategory(dto);
            if (ObjectUtil.isNull(b)){
                //插入失败,保存失败
                throw new BusinessException(MessageConstant.SAVE_FAILED);
            }
        }else {
            //修改,修改前要查找旧的名字
            String byName = broadScopeMapper.findByName(dto.getId());
            boolean b = broadScopeMapper.updateCategory(dto.getId(), dto.getCategoryName(), dto.getSort());
            if (ObjectUtil.isNull(b)){
                //修改失败
                throw new BusinessException(MessageConstant.UPDATE_FAILED);
            }
            //批量替换,旧名字变成新名字
            Boolean b1 = broadScopePromptMapper.updateByCategoryName(byName, dto.getCategoryName());
            if (ObjectUtil.isNull(b1)){
                //批量替换修改失败
                throw new BusinessException(MessageConstant.UPDATE_FAILED);
            }
        }
        return Result.success();
    }
BroadScopeMapper

mapper:

/**
 *  根据分类名字查询个数
 * @param categoryName
 * @return
 */
long countByName(String categoryName);

xml:

<!--通过分类名字重复名字的个数-->
<select id="countByName" resultType="java.lang.Long">
    select count(id) from broadscope_prompt_category  where  category_name=#{categoryName}
</select>

mapper:

/**
 * 新增分类
 * @param dto
 * @return
 */
boolean insertCategory(BroadScopeSaveDTO dto);

xml:

<!--新增分类--> <insert id="insertCategory"> insert into broadscope_prompt_category (id,category_name,status) values (null,#{categoryName},1) </insert>

mapper:

/**
 *  根据id查询分类名称
 * @param id
 * @return
 */
String findByName(Long id);

xml:

<!--根据id查询分类名称-->
<select id="findByName" resultType="java.lang.String">
    select category_name from broadscope_prompt_category
    where id =#{id}
</select>

mapper:

/**
 * 修改分类
 * @param id
 * @param categoryName
 * @param sort
 * @return
 */
boolean updateCategory(Long id, String categoryName, Long sort);

xml:

<!--修改分类-->
<update id="updateCategory">
  update  broadscope_prompt_category
    <set>
        <if test="categoryName !=null and categoryName !=''">
            category_name=#{categoryName},
        </if>
        <if test="sort !=null ">
            sort=#{sort}
        </if>
    </set>
    where id =#{id}
</update>
BroadScopePromptMapper

mapper:

/**
 * 批零替换名字
 * @param
 * @param categoryName
 * @return
 */

Boolean updateByCategoryName(String name, String categoryName);

xml:

<!--批量替换-->
  <update id="updateByCategoryName">
      update  broadscope_prompt
      <set>
     category =#{categoryName}
      </set>
      where  category=#{name}
  </update>

测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值