Spring boot+Mybatis 數據庫查詢 query/select 利用api文檔調用

任務


實現數據庫的查詢功能

相關

使用的庫:culture-center

使用的表:dept_detail

項目入口controller: DeptController

———————————————————分——界——線—————————————————————

我的解決方案


明確自己應該創建的java文件有哪些

main -->

- java -->
    - Controller -->>
        - ①DeptController
    - Service -->>
        - ②IDeptDetailService
        - impl -->>>
            - ③DeptDetailServiceImpl
    - DAO -->
            - ④IDeptDAO 

api -->

- model -->
    - entity -->>>
        - ⑤DeptDetail

    - model -->>>

         - VO-->>>>
             - ⑥DeptDataVo

①DeptDetailController(項目入口)

import javax.validation.Valid;
import java.util.List;

@Api(tags = "部門管理")
@RestController
@RequestMapping("/dept")
public class DeptController {

    @Autowired
    private IDeptDetailService deptDetailService;

    @ApiOperation(value = "根據部門id獲取詳情")
    @RequestMapping(value = "/data/detail", method = RequestMethod.POST)
    @Transactional(rollbackFor = Exception.class)
    public DeptDataVo detail(@RequestParam Long deptId ) {
        DeptDataVo deptDataVo = deptDetailService.detail(deptId);
        return deptDataVo;
    }
}

②IDeptDetailService

public interface IDeptDetailService extends IService<DeptDetail> {


    DeptDataVo detail(Long id);

}

③DeptDetailServiceImpl


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;


@Service
public class DeptDetailServiceImpl extends AbstractNoahServiceImpl<IDeptDetailDAO, DeptDetail> implements IDeptDetailService {


    @Override
    public DeptDataVo detail(Long id) {
        QueryWrapper<DeptDetail> wrapper = new QueryWrapper();
        DeptDetail deptDetail = this.getOne(wrapper.eq("deptId", id));
        if(deptDetail == null){
            return null;
        }
        DeptDataVo mapper = DozerUtil.mapper(deptDetail, DeptDataVo.class);
        mapper.setPictureUrls(StringUtil.string2List(deptDetail.getPictureUrls()));
        return mapper;
    }

}

④IDeptDAO

@Repository
public interface IDeptDetailDAO extends BaseMapper<DeptDetail> {

}

⑤DeptDetail

@TableName("dept_detail")
@Data
public class DeptDetail  extends LogicDelEntity {
    /**
     * 部門id
     */
    private Long deptId ;

    /**
     * 摘要
     */
    private String abstracts;

    /**
     * 圖片地址
     */
    private String pictureUrls;

    /**
     * 人數
     */
    private String memberCount;
}

⑥DeptDataVO

@Data
public  class DeptDataVo {
    /**
     * 部門id
     */
    @NotNull
    @ApiModelProperty(value = "部門id")
    private Long deptId;
    /**
     * appId
     */
    @ApiModelProperty(value = "appId")
    private Long appId;

    /**
     * 簡介
     */
    @ApiModelProperty(value = "簡介")
    private String abstracts;

    /**
     * 圖片地址
     */
    @ApiModelProperty(value = "圖片地址")
    private List<String> pictureUrls;

    /**
     * 人數
     */
    @ApiModelProperty(value = "人數")
    private Long memberCount;
}

測試成功啦

總結

①與數據庫交互

Entity相當於是數據庫的體現,entity中的class就相當於數據庫中的表的體現。

當調用entity中的class時,比如:

DeptDetail deptDetail = this.getOne(wrapper.eq("deptId", param.getDeptId()));
DeptDetail mapper = DozerUtil.mapper(param, DeptDetail.class);

就相當於讀取dept_detail數據庫中的數據字段到生成的deptDetail中;

而mapper相當於生成一張虛字段來拷貝param(NoahDeptDataEditParam)中的數據。

 

②entity和DTO和VO的區別:

1、entity裏的每一個字段,與數據庫相對應,

2、dto裏的每一個字段,是和你前臺頁面相對應,

3、VO,這是用來轉換從entity到dto,或者從dto到entity的中間的東西。

PS:VO和entity裏面的字段應該是一樣的,vo只是entity到dto,或者dto到entity的中間過程,如果沒有這個過程,你仍然可以做到增刪改查

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章