-
@Param注解,能够实现动态的查询数据库。比如Dao层:(@Param(“brandOfficeId”)String brandOfficeId)
Mapper层:brand_office_id=#{brandOfficeId} (大括号里的brandOfficeId就是传到xml的brandOfficeId,这样做的好处就是保证虽然brandOfficeId的值改变,但是仍然可以用这个方法进行数据库查询) -
powerdesigner16.5破解方法:下载软件,并将破解文件bdpbm16.all文件替换掉原有文件即可
-
模糊查询:
controller层:这里的ApplyCrabManDto applyCrabManDto是为了接前台用户在文本框输入的名字,将输入的内容存在 applyCrabManDto中
,如果在没有前台输入内容的情况下,它一开始里面就是空的
@RequestMapping("/findCrabManMsg")
@ResponseBody
public PageResult findCrabManMsg(int pageNo, int pageSize,ApplyCrabManDto applyCrabManDto, HttpSession session) {
PageResult result = new PageResult();
User user = WebUtils.getUserBySession(session);
//用户未登录
if (null == user) {
result.setMsg(Vm.USER_NOT_LOGIN);
return result;
}
try {
StringUtil.checkIllegalCharacter(applyCrabManDto);
Page<ApplyCrabManDto> page = applyCrabManService.findCrabManMsg(pageNo, pageSize,applyCrabManDto, user);
result.setMsg(Vm.FIND_SERVICEDATE_SUCCESS);
result.setRows(page.getRecords());
result.setTotal(page.getTotal());
} catch (Exception e) {
result.setMsg(Vm.FIND_SERVICEDATE_FAIL);
log.error("查询验蟹师失败" + e.getMessage(), e);
return result;
}
return result;
}
Service接口层先不粘贴了,接下来直接上实现层:
因为要求的是查询的是当前品牌办主体下的申请验蟹师信息,所以需要在登录用户那取得主体id和品牌办id,并把它放到applyCrabManDto对象中
这个时候,对象里已存放三个信息了(前台用户输入的姓名,主体id,品牌办id)
@Override
public Page<ApplyCrabManDto> findCrabManMsg(int pageNo, int pageSize, ApplyCrabManDto applyCrabManDto, User user) {
Page<ApplyCrabManDto> page = new Page<>(pageNo, pageSize);
//查询验蟹师申请列表,根据主体id和品牌办id查
applyCrabManDto.setBodyId(user.getBodyId());
applyCrabManDto.setBrandOfficeId(user.getBrandOfficeId());
List<ApplyCrabManDto> list = applyCrabManDao.findCrabManMsg(applyCrabManDto, page);
page.setRecords(list);
return page;
Dao层
List<ApplyCrabManDto> findCrabManMsg(ApplyCrabManDto applyCrabManDto, @Param("page") Page<ApplyCrabManDto> page);
xml:这时候参数就能一一对应了
<select id="findCrabManMsg" resultType="com.kcidea.bms.model.ApplyCrabManDto">
SELECT us.id,us.name,us.sex,us.phone,us.login_ip,us.login_time,acm.service_start_date,acm.service_end_date
FROM apply_crab_man acm LEFT JOIN `user` us ON acm.crab_man_id=us.id
WHERE acm.brand_office_id=#{brandOfficeId} AND acm.body_id=#{bodyId} AND acm.del=1
<if test="name!=null and name!=''">
AND acm.name like CONCAT('%',#{name},'%')
</if>
</select>
}
之前控制台报错说 Paramer name找不到是因为自己虽然controller新建了applyCrabManDto用于接用户输入在文本框的内容,但我Dao层那写的是List<ApplyCrabManDto> findCrabManMsg(@Param("bodyId") String bodyId,@Param("brandOfficeId") String brandOfficeId, @Param("page") Page<ApplyCrabManDto> page);
可以看出我没有把name的内容传到xml里,控制台就报错了,说没有 Paramer name
- 前台日期时间传值后台,控制台报错MistypeMatch的原因是,我在DTO文件中对文件的 @DateTimeFormat(pattern = “yyyy-MM-dd”)
@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd”)两个注解的yyyy-MM-dd后面加了一个空格,计算机就将其解析为了String格式。