任務
實現數據庫的查詢功能
相關
使用的庫: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的中間過程,如果沒有這個過程,你仍然可以做到增刪改查