Skip to content

增删改查

概述

增、删、改、查四种类型的接口在Pangea2.0的统一接口规范下,按照统一的返回格式将数据返回到前端页面。

适用范围

Pangea v2.0.1.6+

快速上手

1、在业务模块的pom文件中添加依赖

html
<!--pangea核心组件包 -->
<dependency>
    <groupId>com.hisense.pangea</groupId>
    <artifactId>pangea-common-core</artifactId>
    <version>${pangea.version}</version>
</dependency>
<!--pangea异常处理包 -->
<dependency>
    <groupId>com.hisense.pangea</groupId>
    <artifactId>pangea-common-exception</artifactId>
    <version>${pangea.version}</version>
</dependency>

2、Controller方法继承BaseController父类

@RestController
@RequestMapping("/demo")
public class DemoController extends BaseController{   //Controller需要继承BaseController类
  //此处可添加API接口代码
}

3、Entity实体类继承BaseEntity父类

jsx
@Data
@TableName(value = "Demo")
public class DemoEntity extends BaseEntity {  //Entity实体类需要继承BaseEntity父类
    //此处可添加属性值
}

4、Mapper继承BaseMapper父类

jsx
public interface DemoMapper extends BaseMapper<DemoEntity> {
    //此处可添加mapper的自定义实现
}

5、Service继承BaseService父类

注意

BaseService有两个入参,第一个参数类型为mapper,第二个参数类型为entity

jsx
@Service
public class DemoService extends BaseService<DemoMapper, DemoEntity> {
   //此处可添加自定义方法
}

6、新增接口

新增接口需要用post方法请求。

返回值为boolean类型,如果新增成功返回true,前端弹出框显示“操作成功”。失败返回false,前端弹出框显示“操作失败”。

java
/**
   * 新增
 */
@PostMapping("save")
public Boolean save(@RequestBody DemoEntity demoEntity) {
    return demoService.saveOrUpdate(demoEntity);  //默认返回方式
}

7、修改接口

修改接口需要用put方法请求。 返回值为boolean类型,如果新增成功返回true,前端弹出框显示“操作成功”。失败返回false,前端弹出框显示“操作失败”。

java
/**
 * 修改
 */
@PutMapping("update")
public Boolean update(@RequestBody DemoEntity demoEntity) {
    return demoService.saveOrUpdate(demoEntity);
}
java
/**
* 批量修改
*/
@PutMapping("batchUpdate")
public boolean batchEditSave(@RequestBody List<Order> orderList) {
	return orderService.saveOrUpdateBatch(orderList);
}

批量修改时默认每1000条向数据库flush一次,如需自定义刷新条数,可调用如下方法:

java
boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize);

注意

前端页面配置的批量修改功能及后端默认生成的接口仅为单表操作,如需多表操作请按实际情况,调整批量修改接口的传参及后端接口逻辑

8、查询接口

查询接口需要用get方法请求。

查询分为普通查询、自定义查询分页查询

返回值有两种方式,对象和列表,返回值均会封装成json格式返回到前端的data字段中。

java
/**
 * 查询对象
 */
@GetMapping("get/{id}")
public DemoEntity get(@PathVariable("id") Long id) {
    return demoService.getById(id);
}
 
/**
 * 查询列表
 */
@GetMapping("list")
public List list(@RequestBody DemoEntity demoEntity) {
    return demoService.list();
}

/**
 * 高级查询
 */
@PostMapping("criteriaList")
@Paginate
public List<DemoEntity> criteriaList(@RequestBody List<ConditionVO> conditionList) {
    QueryWrapper<DemoEntity> queryWrapper = (QueryWrapper<DemoEntity>) SearchUtil.parseWhereSql(conditionList);
    return demoService.list(queryWrapper);
}

关于高级查询更详细的使用方式参见自定义查询

注意

查询中如果传参封装在url上,且传参类型为字符串,传入参数后缀包含了".",需要将路径中的传参更改为{demo:

jsx
样例:请求参数demo字段的值为aaa.ex  接口的编写方式如下所示:

/**
 * 查询
 */
@GetMapping("test/{demo:.+}")
public Demo selectDemo(@PathVariable("demo") String demo) {
    return service.select(demo);
}

9、删除接口

删除接口需要用delete方法请求。

默认返回值为Boolean类型,如果删除成功返回true,前端弹出框显示操作成功。失败返回false,前端弹出框显示操作失败。

jsx
/**
 * 删除
 */
@DeleteMapping("delete")
public Boolean delete(@RequestBody List<Long> ids) {
    return demoService.removeByIds(ids);
}

10、异常信息返回方式

接口中的异常信息处理有两种方式。

第一种是将返回类型更改为String类型,错误码为500,异常信息将会按照String返回的内容进行展示。

jsx
/**
 * 删除
 */
@DeleteMapping("delete")
public String delete(@RequestBody List<Long> ids) {
    return demoService.removeByIds(ids)?"":"操作失败";
}

第二种是用throwx()方法进行调控,会直接进行统一的异常抛出,或者通过传入codemessage进行异常抛出

jsx
/**
 * 删除
 */
@DeleteMapping("delete")
public String delete(@RequestBody List<Long> ids) {
    throwx();                      //统一异常抛出
    throwx("500","操作失败");      //传参异常抛出
    return demoService.removeByIds(ids)?"":"操作失败";
}

异常信息异常具体指导请参照 异常处理 文档。

11、返回格式

get方法返回格式:

jsx
{
   code: 200,  //状态码
   msg: '提示信息',
   data: {}/[] 数据,
   alert:0  //alert 默认为0,不显示提示信息
}

post/put/delete方法返回格式:

{
   code: 500,  //状态码
   msg: '提示信息'
   alert:1  //alert = 1 ,前端弹出框显示msg
}

返回格式具体指导请参考 返回数据格式

12、接口测试

接口可以采用postmanSoapUI等接口调试进行测试,具体的指导请参考 接口测试

注意事项

1、如果想要采用统一返回结果进行处理,controllerentityservicemapper继承的父类不能变更。

2、父类采用Mybatis-Plus作为持久层框架,service中自动继承plus中的方法和实现,可直接使用。

Mybatis-plus的具体指导请参考 使用MyBatis-Plus

3、分页注解@Paginate只对返回类型List的才能生效。

4、新增接口和修改接口,无须手动设置创建人,创建时间,修改人和修改时间,实体类继承BaseEntity后,会自动填充,取不到用户时会设置anonymous,源码请参见AuditMetaObjectHandler