SpringBoot项目的classpath包含三个:
src/main/java路径
src/main/resouces路径
第三方jar包的根路径
若依判断字符串非空,时间大小,后台格式判断,还有一种通过@validated校验注解
ObjectUtils.isNotEmpty(platCustomer)
Assert.isTrue(ObjectUtils.isNotEmpty(oeDeviceinfo.getClientId()),"clientId 不能为空");
Assert.isTrue(ObjectUtils.isNotEmpty(object),"没有数据不能导出");
Assert.isTrue(trainCourse.getStartTime().getTime()>new Date().getTime(),"开始时间不能小于当前时间");
StringUtils.isNotNull("asdfasd")
public Result mobilelogin (HttpServletRequest request)
{
String username = request.getParameter("username");
}
//后台判断
if (tctDistributor.getPhonenumber() == null) throw new RuntimeException("手机号不能为空");
if (tctDistributor.getContactsName() == null) throw new RuntimeException("联系人姓名不能为空");
//手机号校验
String reg = "1[3456789][0-9]{9}";
if (!(tctDistributor.getPhonenumber().matches(reg))) throw new RuntimeException("请输入正确的手机号");
//用户手机号查询
SysUser sysUser = userMapper.findByPhone(tctDistributor.getPhonenumber(), "0");
if (sysUser != null) throw new RuntimeException("用户手机号已存,请从新输入");
//查询账号是否重复
SysUser sysUserNameUser = tctDistributorMapper.findByUserName(tctDistributor.getUserName(), "0");
if (sysUserNameUser != null) throw new RuntimeException("登陆账号已经存在请从新输入");
//邮箱校验
String erg = "[a-zA-Z0-9_]+@[a-z0-9]+(\\.[a-z]+){1,2}";
boolean matches = tctDistributor.getEmail().matches(erg);
if (!matches) throw new RuntimeException("请输入正确的邮箱格式");
获取当前登陆者
getLoginUser().getUser().
校验唯一性
impl层
/**
* 校验部门名称是否唯一
*
* @param dept 部门信息
* @return 结果
*/
@Override
public String checkDeptNameUnique(SysDept dept)
{
Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue())
{
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
mapper层
<include refid="selectDeptVo"/>
where dept_name=#{deptName} and parent_id = #{parentId} limit 1
@Service
public class SysUserServiceImpl extends BaseServiceImpl<SysUserMapper, SysUser> implements ISysUserService
{
*/
public interface SysUserMapper extends BaseMapper<SysUser>
@EqualsAndHashCode(callSuper = true)
public class SysUser extends BaseEntity<SysUser> {
/**
* 校验角色编码是否存在
*/
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.CHECK)
@GetMapping("/checkUserNameUnique")
public R checkUserNameUnique(SysUser user) {
Map<String, String> checkMap = new HashMap<String, String>(1);
try {
userService.checkUserNameUnique(user);
checkMap.put("code", "1");
} catch (Exception e) {
checkMap.put("code", "2");
}
return R.data(checkMap);
}
/**
* 校验用户名称是否唯一
*
* @param user 用户名称
* @return 结果
*/
public void checkUserNameUnique(SysUser user);
/**
* 校验用户名称是否唯一
*
* @param user 用户名称
* @return 结果
*/
@Override
public void checkUserNameUnique(SysUser user)
{
SysUser sysUserUnique = new SysUser();
sysUserUnique.setNotEqualId(user.getId());
sysUserUnique.setUserName(user.getUserName());
if (!CollectionUtils.isEmpty(mapper.findListWithUnique(sysUserUnique))) {
throw new BizException(SysErrorCode.B_SYSUSER_UserNameAlreadyExist);
}
}
引入redis,从bean获取redis来使用
<!-- redis 缓存操作 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
service层
@Autowired
private RedisCache redisCache;
redisCache有一些方法
@Autowired
private RedisCache redisCache;
redisCache.setCacheList()
SpringUtils.getBean(RedisCache.class).setCacheObject("arrange"+rotateInfo.getId(),0);
log日志文件输出(两种方式)
@Slf4j
log.info("");
private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);
logger.info("====关闭后台任务任务线程池====");
logger.error(e.getMessage(), e);
private Logger log = LoggerFactory.getLogger(CampusSyncoperationServiceImpl.class);
log.info(e.getMessage());
配置配置类注解
需要有get set方法配合使用
@Data
@ConfigurationProperties(prefix = "mqtt")
导入excel配置
@Excel(name = "是否可配置老师 可以/不可以", readConverterExp = "0=不可以,1=可以")
@Excels({
@Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
@Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
})
导入模板
Controller层======================
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('system:user:import')")
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream());
LoginUser loginUser = getLoginUser();
String operName = loginUser.getUsername();
String message = userService.importUser(userList, updateSupport, operName);
return AjaxResult.success(message);
}
===================service层=================
@Override
@Transactional(readOnly = false)
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
{
if (StringUtils.isNull(userList) || userList.size() == 0)
{
throw new CustomException("导入用户数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
String password = ConfigUtils.getConfigValueByKey("sys.user.initPassword","123456");
for (SysUser user : userList)
{
try
{
// 验证是否存在这个用户
SysUser u = mapper.selectUserByUserName(user.getUserName(), BaseEntity.DEL_FLAG_NORMAL);
if (StringUtils.isNull(u))
{
user.setPassword(SecurityUtils.encryptPassword(password));
user.setCreateBy(operName);
this.insertUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
}
else if (isUpdateSupport)
{
user.setUpdateBy(operName);
this.updateUser(user);
successNum++;
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功");
}
else
{
failureNum++;
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
}
}
catch (Exception e)
{
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
failureMsg.append(msg + e.getMessage());
log.error(msg, e);
}
}
if (failureNum > 0)
{
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new CustomException(failureMsg.toString());
}
else
{
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}