十次方分布式后台搭建day01

一、十次方项目工程搭建

  1. 利用工具idea2020.3.1创建父工程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAKZ6RxK-1610363457447)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210111123144451.png)]

  2. 删掉src文件夹(可以不删,因为这个文件夹没啥用)

  3. 创建utils工具类

    • 创建StatusCode类

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LddKakxj-1610363457453)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210111123704515.png)]

      以上是我们所需要用到的前端状态返回码

  4. 创建result包

    创建无分页结果类Result

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJWY5PZX-1610363457457)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210111124504456.png)]

    ​ 并写好get和set方法

    创建有分页结果类PageResult

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8vJxfjSM-1610363457461)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210111125033180.png)]

    注意:这里的PageResult类没有写flag,code,msg等参数,是因为在后面我们可以直接将PageResult放入Result中,这样可以提高效率

  5. 创建vo包。在vo包下建Label实体类

package com.tensquare.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "tb_label")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Label {
    @Id
    private String id;//OID编号
    @Column(name = "labelname")
    private String labelname;//标签名称
    @Column(name = "state")
    private String state;//状态
    @Column(name = "count")
    private Long count;//使用数量
    @Column(name = "fans")
    private Long fans;//关注数
    @Column(name = "recommend")
    private String recommend;//是否推荐
}

创建dao包,健LabelDao接口

package com.tensquare.dao;


import com.tensquare.vo.Label;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

public interface LabelDao extends JpaRepository<Label,String>, JpaSpecificationExecutor<Label> {
}

LabelDao继承了两个接口JpaRepository和JpaSpecificationExecutor。其中jparepoditory有

List<T> findAll();

List<T> findAll(Sort var1);

List<T> findAllById(Iterable<ID> var1);

<S extends T> List<S> saveAll(Iterable<S> var1);

void flush();

<S extends T> S saveAndFlush(S var1);

void deleteInBatch(Iterable<T> var1);

void deleteAllInBatch();

T getOne(ID var1);

<S extends T> List<S> findAll(Example<S> var1);

<S extends T> List<S> findAll(Example<S> var1, Sort var2);

关于这两个接口的区别,这里有详细的介绍

[]: https://cloud.tencent.com/developer/article/1429349

  1. 建service包,包下建LabelService类
@Service
public class LabelService {
    @Autowired
    private LabelDao labelDao;
    @Autowired
    private IdWorker idWorker;


    /**
    * 查询全部
    * @return
    **/
    public List<Label> findAll(){
        return labelDao.findAll();
    }

    /**
     * 根据ID查询标签
     * @return
     */
    public Label findById(String id){
        return labelDao.findById(id).get();
    }

    /**
     * 增加标签
     * @param label
     */
    public void add(Label label){
        label.setId( idWorker.nextId()+"" );//设置ID
        labelDao.save(label);
    }

    /**
     * 修改标签
     * @param label
     */
    public void update(Label label){
        labelDao.save(label);
    }
    /**
     * 删除标签
     * @param id
     */
    public void deleteById(String id){
        labelDao.deleteById(id);
    }

  1. 建controller包,建LabelController类

    @RestController
    @RequestMapping("label")
    public class LabelController {
        @Autowired
        private LabelService labelService;
        /**
         * 查询全部列表
         * @return
         */
        @RequestMapping(method = RequestMethod.GET)
        public Result<List> findAll(){
            return new Result<>(true, StatusCode.OK,"查询成功",
                    labelService.findAll() );
        }
        /**
         * 根据ID查询标签
         * @param id
         * @return
         */
        @RequestMapping(value="/{id}",method = RequestMethod.GET)
        public Result<Label> findById(@PathVariable String id){
            return new Result<>(true,StatusCode.OK,"查询成功",labelService.findById(id));
        }
        /**
         * 增加标签
         *
         * @param label
         * @return
         */
        @RequestMapping(method = RequestMethod.POST)
        public Result add( @RequestBody Label label){
            labelService.add(label);
            return new Result(true,StatusCode.OK,"增加成功");
        }
        /**
         * 修改标签
         * @param label
         * @return
         */
        @RequestMapping(value="/{id}" ,method = RequestMethod.PUT)
        public Result update( @RequestBody Label label,@PathVariable String
                id){
            label.setId(id);
            labelService.update(label);
            return new Result(true,StatusCode.OK,"修改成功");
        }
        /**
         * 删除标签
         * @param id
         * @return
         **/
        @RequestMapping(value="/{id}" ,method = RequestMethod.DELETE)
        public Result deleteById(@PathVariable String id){
            labelService.deleteById(id);
            return new Result(true,StatusCode.OK,"删除成功");
        }
    
    }
    
    
  2. 用postman工具进行测试。

  3. 建统一异常处理类

     @ControllerAdvice
        public class BaseExceptionHandler {
            @ExceptionHandler(value = Exception.class)
            @ResponseBody
            public Result error(Exception e) {
                e.printStackTrace();//在控制台打印错误
                if(e.getMessage().contains("exists")){
                    return new Result(false, StatusCode.ERROR, "标签不存在");
                }else{
                    return new Result(false, StatusCode.ERROR, e.getMessage());
                }
            }
        }
    
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值