当前位置: 首页 > news >正文

做网站有必要做app吗视频聚合网站怎么做不侵权

做网站有必要做app吗,视频聚合网站怎么做不侵权,东莞市公共资源网,网站建站报价单目录 发布文章 接口文档 业务实现 自定义参数校验 项目参数要求 实现思路 实现步骤 文章列表(条件分页) 接口文档 业务实现 mapper映射 更新文章 接口文档 业务实现 获取文章详情 接口文档 业务实现 删除文章 接口文档 业务实现 文章管理业务表结构…

目录

发布文章

接口文档

 业务实现

自定义参数校验

项目参数要求 

实现思路 

实现步骤

文章列表(条件分页)

接口文档 

业务实现 

mapper映射 

更新文章

 接口文档

 业务实现

获取文章详情 

接口文档 

业务实现 

删除文章 

接口文档 

业务实现 


文章管理业务表结构

发布文章

接口文档

 业务实现

创建ArticleController类并完成请求的方法

@RestController
@RequestMapping("/article")
public class ArticleController {@Autowiredprivate ArticleService articleService; //注入ArticleService接口@PostMappingpublic Result add(@RequestBody Article article){articleService.add(article);return Result.success();}
}

创建ArticleService接口并完成方法

public interface ArticleService {//新增文章void add(Article article);
}

创建ArticleServiceimpl接口实现类并完成方法

@Service
public class ArticleServiceimpl implements ArticleService {@Autowiredprivate ArticleMapper articleMapper; //注入ArticleMapper接口@Overridepublic void add(Article article) {//补充id属性值 用于添加到create_usera字段中Map<String,Object> map = ThreadLocalUtil.get();Integer id = (Integer) map.get("id");article.setCreateUser(id);articleMapper.add(article);}
}

创建ArticleMapper接口并完成方法

@Mapper
public interface ArticleMapper {//添加文章@Insert("insert into article(title,content,cover_img,state,category_id,create_user,create_time,update_time)" +" values(#{title},#{content},#{coverImg},#{state},#{categoryId},#{createUser},now(),now())")void add(Article article);
}

运行请求查看 

 数据库中查看已添加成功

自定义参数校验

    已有的注解不能满足所有的校验需求,特殊的情况需要自定义校验(自定义校验注解) 

项目参数要求 

实现思路 

  1. 自定义注解State
  2. 自定义校验数据的类StateValidation 实现ConstraintValidator接口
  3. 在需要校验的地方使用自定义注解 

 实现步骤

 在Article实体类中对能满足校验要求的成员变量进行校验

在ArticleController接口中对方法参数使用@Validated注解 

但对于state变量参数已有的注解不能满足所有的校验需求,所以需要对其使用自定义参数校验。

新建anno包,在包下新定义State注解,并完善定义注解的代码

@Documented //元注解 用于抽取自定义的注解到帮助文档
@Target({ElementType.FIELD}) //元注解 自定义的标注用在哪些地方 FIELD表示在变量属性上标注
@Retention(RetentionPolicy.RUNTIME) //元注解 用于标识自定义的注解会在哪一阶段保留 RUNTIME表示运行阶段
@Constraint(validatedBy = {}) //用于指定谁给自定义的注解定义参数校验规则
public @interface State {//message用于提供校验失败后的提示信息String message() default "'state参数的值只能是已发布或者草稿";//用于指定分组Class<?>[] groups() default {};//负载 获取到State注解的附如信息Class<? extends Payload>[] payload() default {};
}

新建validation包,在包下定义StateValidation校验规则类,并完善校验规则代码

public class StateValidation implements ConstraintValidator<State,String> { //接口的泛型:<会给哪个注解提供校验规则,校验的数据类型>/***参数解释:** value:将来要校验的数据* context* return: 如果返回false则校验不通过, 如果返回true则校验通过*/@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {//提供校验规则if(value == null){return false;}if(value.equals("已发布") || value.equals("草稿")){return true;}return false; //其余情况返回false}
}

 再回到State注解中完善要指定的校验规则

到实体类中在需要的成员变量使用该自定义注解用于达到注解参数校验的目的

文章列表(条件分页)

接口文档 

业务实现 

创建PageBean实体类 

//分页返回结果对象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageBean <T>{private Long total;//总条数private List<T> items;//当前页数据集合
}

编写ArticleController中的请求的方法

    @GetMappingpublic Result<PageBean<Article>> list(Integer pageNum,Integer pageSize,  //使用@RequestParam(required = false)可以使参数设置为可传入也可不传入@RequestParam(required = false) String categoryId,@RequestParam(required = false) String state){PageBean<Article> pb = articleService.list(pageNum,pageSize,categoryId,state);return Result.success(pb);}

编写ArticleService接口的方法

    //条件分页列表查询PageBean<Article> list(Integer pageNum, Integer pageSize, String categoryId, String state);
}

在pom文件导入pagehelper插件依赖用于完成分页查询 

        <!-- pagehelper插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version></dependency>

编写ArticleServiceimpl接口实现类的方法

    @Overridepublic PageBean<Article> list(Integer pageNum, Integer pageSize, String categoryId, String state) {//定义pageBean对象PageBean<Article> pb = new PageBean<>();//开启分页查询 PageHelperPageHelper.startPage(pageNum,pageSize);//添加id参数 调用mapper接口的方法Map<String,Object> map = ThreadLocalUtil.get();Integer id = (Integer) map.get("id");List<Article> arlist = articleMapper.list(id,categoryId,state);//page中提供了方法可以获取pagehelper分页查询后,得到的总记录条数和当前页数Page<Article> p = (Page<Article>) arlist;//将page对象获取的记录和条数添加到pagebean对象中pb.setTotal(p.getTotal());pb.setItems(p.getResult());return  pb; //返回pagebean对象}

编写ArticleMapper接口的方法 

    //条件分页列表查询List<Article> list(Integer id, String categoryId, String state);

mapper映射 

由于参数 categoryId和state参数为非必填,所以这里sql需要用到sql映射文件来写动态sql

在resource目录下创建和mapper包一样的结构目录

目录结构要和mapper接口目录相同

配置文件名称要和接口名称相同

编写sql映射配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 命名空间要和mapper接口的路径全类名要相同   -->
<mapper namespace="com.springboot.springboot_test.mapper.ArticleMapper">
<!-- 编写动态sql
select标签的
id参数要和mapper接口的方法名称一致
resultType 返回值类型要和实体类名称一致--><select id="list" resultType="com.springboot.springboot_test.pojo.Article">select * from article<where><if test="categoryId != null">category_id = #{categoryId}</if><if test="state != null">and state = #{state}</if>and create_user= #{id}</where></select></mapper>

运行请求查看

 

更新文章

 接口文档

 业务实现

编写ArticleController中的请求的方法

    @PutMappingpublic Result update(@RequestBody @Validated Article article){articleService.update(article);return Result.success();}

编写ArticleService接口的方法

    //更新文章void update(Article article);

编写ArticleServiceimpl接口实现类的方法

    @Overridepublic void update(Article article) {articleMapper.update(article);}

编写ArticleMapper接口的方法

    //更新文章@Update("update article set title = #{title},content = #{content},cover_img = #{coverImg},state = #{state}, " +"category_id = #{categoryId},update_time = now() where id = #{id}")void update(Article article);

运行请求查看

 

获取文章详情 

接口文档 

业务实现 

编写ArticleController中的请求的方法

    @GetMapping("/detail")public Result detail(Integer id){Article ar = articleService.findById(id);return Result.success(ar);}

编写ArticleService接口的方法

    //查看文章详情Article findById(Integer id);

编写ArticleServiceimpl接口实现类的方法

    @Overridepublic Article findById(Integer id) {Article ar = articleMapper.findById(id);return ar;}

编写ArticleMapper接口的方法

    //查看文章详情@Select("select * from article where id =#{id}")Article findById(Integer id);

 运行请求查看

删除文章 

接口文档 

业务实现 

编写ArticleController中的请求的方法

    @DeleteMappingpublic Result delete(Integer id){articleService.delete(id);return Result.success();}

编写ArticleService接口的方法

    //删除文章void delete(Integer id);

编写ArticleServiceimpl接口实现类的方法

    @Overridepublic void delete(Integer id) {articleMapper.delete(id);}

编写ArticleMapper接口的方法

    //删除文章@Delete("delete from article where id = #{id}")void delete(Integer id);

运行请求查看

 

 

http://www.15wanjia.com/news/158712.html

相关文章:

  • 免费的网站模板下载北京高端购物商场
  • 做网站有什么要求怎么做海淘网站
  • 北京一个公司做网站认证网站域名空间5个G的多少钱
  • 美妆网站怎么做深圳网深圳网站开发公司
  • 杭州网站建设推广公司做一网站要学些什么软件
  • 西峡微网站开发专业团队原图
  • wordpress生成网站模版邢台提供网站设计公司哪家专业
  • 网站开发的最后5个阶段网站建设找天宇智能
  • 教做美食的视频网站没有充值入口的传奇游戏
  • 保险网站哪家好自己做个购物网站
  • 公司网站如何被收录广东深圳广东深圳网站建设
  • wordpress国外主题网站网站制作 江西
  • 哪里买到纯净网站模板沈阳网站制作建设
  • 网站后台不能上传图片软文推广营销
  • 电商网站开发教学视频无锡网站建设收费
  • 做手机网站的好处seo视频教学网站
  • 台州模板建站代理电商网站建设技术
  • 建设银行官方网站电子银行登录wordpress查询系统主题
  • 思途做的旅游网站服务佳的小企业网站建设
  • 成都vr 网站开发在线电子商务网站开发
  • 怎么做动漫照片下载网站网站的盈利点
  • 百度网站地图生成器苏州网站建设名字
  • 网站经营性备案多少钱简单的网页设计网站
  • 钓鱼网站的域名怎么不稳定郑州seo推广优化
  • 云校网站建设WordPress内容页面加边框
  • 网站建设的初步预算wordpress 评论重复
  • 创新的品牌网站建设专注苏州网站优化
  • 松江新城投资建设集团发展有限公司网站wordpress文章储存位置
  • 怎么免费建个人网站手机彩票网站开发
  • 搜企业信息的网站建设网站的目标和作用