Spring Boot + Mybatis plus + Vue3 + Element Plus 截取年份
记一次,前端传String类型(2022)的年份到后台,后台响应类型为 Date类型(yyyy-MM-dd)怎么实现等值匹配
前端组件代码:
`
<el-form-item label="年份">
<el-date-picker
v-model="state.queryForm.startTime"
type="year"
placeholder="请选择年份"
format="YYYY"
value-format="YYYY"
/>
</el-form-item>`
后端获取请求参数:
`
@Override
public PageResult<WrProjectVO> page(WrProjectQuery query) {
//查询参数
Map<String, Object> params = getParams(query);
//开始分页
IPage<WrProjectEntity> page = getPage(query);
params.put(Constant.PAGE,page);
//数据列表
List<WrProjectEntity> list = baseMapper.getList(params);
return new PageResult<>(WrProjectConvert.INSTANCE.convertList(list), page.getTotal());
}`
获取getParams(query) 请求参数,以Map形式进行匹配
`
private Map<String, Object> getParams(WrProjectQuery query) {
Map<String, Object> params = new HashMap<>();
params.put("startTime",query.getStartTime());
params.put("orgId",query.getOrgId());
params.put("name",query.getName());
return params;
}`
Mapper.xml操作
`
<select id="getList" resultType="net.maku.system.entity.WrProjectEntity">
select a.id,a.code,a.name,a.startTime,a.endTime ,f.personnel,n.contracts,a.checkedStatus ,a.checkedMemo from wr_project a
left join sys_org b on a.departmentId = b.id
left join (select e.project_id,count(e.project_id) as personnel from wr_project_emp_relation e group by e.project_id) f
on a.id = f.project_id
left join (select m.projectId,count(1) as contracts from wr_project_contract_relation m
left join wr_contract_info p
on m.contractId = p.id
where p.flag = 1
group by m.projectId ) n
on a.id = n.projectId where 1=1 and a.deleted = 0 and b.deleted = 0
<if test="orgId!=null and orgId.trim() != ''">
and b.id = #{orgId}
</if>
<if test="name!=null and name.trim() != ''">
and a.id = #{name}
</if>
<if test="startTime != null and startTime != ''">
<![CDATA[ and EXTRACT(year FROM a.startTime) = #{startTime} ]]>
</if>
order by a.update_time desc
</select>`