Spring boot+Mybatis 数据库查询 query/select 利用api文档调用

3 篇文章 0 订阅
2 篇文章 0 订阅

任务


实现数据库的查询功能

相关

使用的库: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的中间过程,如果没有这个过程,你仍然可以做到增删改查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值