欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

增删改查 接口·快速开发·参照流程

程序员文章站 2022-03-04 13:13:57
...

增删改查

假定四个接口Controller入参都是
(@RequestBody Student student)

1.增加接口——1个原生方法(须调用查询接口、更新接口方法)
//1.调用查询接口
//查询该记录是否已存在-根据student_name、class_name等增加接口的(无id)入参信息查询
【Student selecting(Student student);】 
//不存在则插入
//2.增加接口:

【void inserting(Student student); 】

//已存在则更新 或 提示已存在
//3.调用更新接口 の一个附属方法
//或 提示已存在
//更新-根据student_name、class_name等增加接口的(无id)入参信息更新
【void updateByOther(Student student);】
2.删除接口——1个原生方法

(前端知道该条记录存在 才来请求的删除)

//传id不传student_name、class_name根据id删除;
//传student_name、class_name不传id根据student_name、class_name删除;
//传了id也传了student_name、class_name则根据这三者去删除;
//删除接口:

【void deleting(Student student); 】

//只需要一个sql就搞定了[不用考虑没有匹配到记录时如何提示前端删除失败的问题-
//-因为前端知道该条记录存在才来请求的删除]
【
  delete from student
  <trim prefix="where " prefixOverrides="" suffix="" suffixOverrides="and ">
      <if test="id != null">
          id = #{id} and
      </if>
      <if test="student_name != null">
          student_name= #{student_name} and
      </if>
      <if test="class_name != null">
          class_name= #{class_name} and
      </if>
      <if test="1 == 1">
          is_del = 0
      </if>
  </trim>
  】
3.修改接口——1个原生方法(+1个供增加接口调用-但不暴露给前端的方法)
// 删除接口:
//根据id删除

【void updateById(Student student);】

//供增加接口调用-但不暴露给前端的方法//注意:该方法可以不在service,serviceimp中实现
//更新之前最好校验id不为空(如果id为空,where条件失效会更新全部数据!)
【void updateByOther(Student student );】

(分析:为什么不写在一个sql中?如果写在一个sql中那么sql将是这样的:

  update student
  <set>
      <if test="student_name!=null">
        student_name= #{student_name},
      </if>
      <if test="class_name!=null">
        class_name= #{class_name},
      </if>
      <if test="avg_score!=null">
        avg_score= #{avg_score},
      </if>
 </set>
 <trim prefix="where " prefixOverrides="" suffix="" suffixOverrides="and ">
      <if test="id!=null">
          id = #{id} and
      </if>
      <if test="student_name!=null">
          student_name= #{student_name} and
      </if>
      <if test="class_name!=null">
          class_name= #{class_name} and
      </if>
      <if test="1 == 1">
          is_del = 0
      </if>
 </trim>

此时:
1.根据student_name、class_name去更新avg_score时,倒是不会出错;
———————————————》但是
2.根据id去更新student_name、class_name、avg_score信息时,会因为where条件中的student_name、class_name是待设置的新值而匹 配不到记录导致更新失败。

4.修改接口——1个原生方法
//一个方法就够了,完全可以根据where多条件(单条件、无条件)查询

【List<Student’> selecting(Student student);】