任务
实现数据库的查询功能
相关
使用的库: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的中间过程,如果没有这个过程,你仍然可以做到增删改查