JAVA service层参数校验

package springboot.domain;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.Set;

/**
 * <p>
 * 后台管理用户表
 * </p>
 *
 * @since 2020-07-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class TUser extends Model {

    private static final long serialVersionUID = 1L;

    /**
     * 账号
     */
    @NotBlank(message = "name is not allowed to be null")
    @TableId
    @Excel(name = "姓名")
    @ExcelProperty("姓名")
    private String username;

    /**
     * 密码
     */
    @Excel(name = "密码")
    @ExcelProperty({"个人信息","密码"})
    private String password;

    @Excel(name = "照片", type = 2 ,width = 15 , height = 20,imageType = 1)
    private String userImg;

    @Excel(name = "二维码", type = 2 ,width = 15 , height = 15,imageType = 1)
    private String userQrCode;

    /**
     * 创建时间
     */
    @Excel(name = "创建时间", format = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty({"个人信息","创建时间"})
    private Date createTime;

    /**
     * 更新时间
     */
    @Excel(name = "修改时间", format = "yyyy-MM-dd HH:mm:ss")
    @ExcelProperty({"个人信息","创建时间"})
    private Date updateTime;

    /**
     * 表的后缀(年月) 按月分表
     */
    @TableField(exist = false)
    @ExcelIgnore
    private String date;

    /**
     * 用户对应的角色集合
     */
    @ExcelIgnore
    @TableField(exist = false)
    private Set<Role> roles;


}

@RestController
public class HelloController {
    /**
     * service层参数校验
     * @param tUser
     * @return
     */
    @PostMapping("test001")
    public ResponseDTO test001(@RequestBody TUser tUser){
        tUserService.selectTest(tUser);
        return ResponseDTO.success(tUser);
    }
}
package springboot.service;


import com.baomidou.mybatisplus.extension.service.IService;
import springboot.domain.TUser;

import javax.validation.Valid;
import java.util.List;

/**
 * <p>
 * 后台管理用户表 服务类
 * </p>
 *
 * @author duantingwei
 * @since 2020-07-16
 */
public interface TUserService extends IService<TUser> {
    void selectTest(@Valid TUser tUser);
}
/**
 * <p>
 * 后台管理用户表 服务实现类
 * </p>
 *
 * @since 2020-07-16
 */
@Service
@Validated
public class TUserServiceImpl extends ServiceImpl<TUserMapper, TUser> implements TUserService {
    public void selectTest(TUser tUser){

    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在原来的项目中,@Valid和@Validated注解通常被用于controller对requestBody参数进行校验。但是现在项目决定将controller变薄,将requestBody的校验移至service。然而,发现在service的单元测试中,这两个注解并没有生效。为了解决这个问题,可以按照以下步骤进行操作: 1. 首先,在service类上添加@Validated注解,例如: ``` @Service @Validated public class StorageBinServiceImpl implements StorageBinService { // ... } ``` 2. 然后,在单元测试类中添加@RunWith(SpringJUnit4ClassRunner.class)和@ContextConfiguration(classes = {UserServiceTest.Config.class})注解,例如: ``` @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {UserServiceTest.Config.class}) public class UserServiceTest { // ... } ``` 3. 接着,在单元测试类中创建一个内部静态类Config,用于配置MethodValidationPostProcessor,并且在该类中注入service bean,例如: ``` public static class Config { @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); } @Bean public UserService userService() { return new UserService(); } } ``` 4. 最后,在单元测试方法上使用@Test注解,并调用service的方法进行测试,例如: ``` @Autowired private UserService service; @Test public void should_throw_exception_when_age_smaller_than_zero() { CreateUserCommand command = new CreateUserCommand("deigo", -1); try { service.save(command); } catch (ConstraintViolationException e) { System.out.println(e.getConstraintViolations().size()); // 输出结果应为1 } } ``` 通过以上步骤,可以在service的单元测试中使@Validated注解生效,实现对requestBody参数校验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决 @Validate 在 Service 的单元测试不生效](https://blog.csdn.net/yy_diego/article/details/116611840)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JAVA参数分组验证Validation及service触发校验规则](https://blog.csdn.net/Seven71111/article/details/112175646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值