当前位置: 首页 > news >正文

wordpress站点被删wordpress信息填写

wordpress站点被删,wordpress信息填写,上海本地app推荐,莞城网站仿做同样的新增的话我们也是分成两种#xff0c; 共同点#xff1a; 返回值都是只需要一个Result.success就可以了 接受前端的格式都是json格式#xff0c;所以需要requestbody 1.不需要连接其他表的 传统方法#xff0c;在service层把各种数据拼接给new出来的employee从…同样的新增的话我们也是分成两种   共同点 返回值都是只需要一个Result.success就可以了 接受前端的格式都是json格式所以需要requestbody 1.不需要连接其他表的 传统方法在service层把各种数据拼接给new出来的employee从而实现到数据库的保存 示例代码   Override public void save(EmployeeDTO employeeDTO) {// 获取当前用户IDLong currentUserId BaseContext.getCurrentId();// 使用builder流构建Employee对象Employee employee Employee.builder().username(employeeDTO.getUsername()).password(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes())).name(employeeDTO.getName()).phone(employeeDTO.getPhone()).sex(employeeDTO.getSex()).idNumber(employeeDTO.getIdNumber()).createTime(LocalDateTime.now()) // 设置创建时间.updateTime(LocalDateTime.now()) // 设置修改时间.createUser(currentUserId) // 设置创建人.updateUser(currentUserId) // 设置修改人.status(1) // 设置默认状态为启用.build();// 保存到数据库employeeMapper.save(employee); }但是我们对于所有的增加和修改方法我们都需要需要记录时间和操作人就需要用到切面编程 自定义切面注解如下 package com.sky.annotation;import com.sky.enumeration.OperationType; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/*** 自定义注解用于标识某个方法需要进行功能字段自动填充处理*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface AutoFill {//数据库操作类型UPDATE INSERTOperationType value(); }package com.sky.aspect;import com.sky.annotation.AutoFill; import com.sky.constant.AutoFillConstant; import com.sky.context.BaseContext; import com.sky.enumeration.OperationType; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.stereotype.Component; import java.lang.reflect.Method; import java.time.LocalDateTime;/*** 自定义切面实现公共字段自动填充处理逻辑*/ Aspect Component Slf4j public class AutoFillAspect {/*** 切入点*/Pointcut(execution(* com.sky.mapper.*.*(..)) annotation(com.sky.annotation.AutoFill))public void autoFillPointCut(){}/*** 前置通知在通知中进行公共字段的赋值*/Before(autoFillPointCut())public void autoFill(JoinPoint joinPoint){log.info(开始进行公共字段自动填充...);//获取到当前被拦截的方法上的数据库操作类型MethodSignature signature (MethodSignature) joinPoint.getSignature();//方法签名对象AutoFill autoFill signature.getMethod().getAnnotation(AutoFill.class);//获得方法上的注解对象OperationType operationType autoFill.value();//获得数据库操作类型//获取到当前被拦截的方法的参数--实体对象Object[] args joinPoint.getArgs();if(args null || args.length 0){return;}Object entity args[0];//准备赋值的数据LocalDateTime now LocalDateTime.now();Long currentId BaseContext.getCurrentId();//根据当前不同的操作类型为对应的属性通过反射来赋值if(operationType OperationType.INSERT){//为4个公共字段赋值try {Method setCreateTime entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_TIME, LocalDateTime.class);Method setCreateUser entity.getClass().getDeclaredMethod(AutoFillConstant.SET_CREATE_USER, Long.class);Method setUpdateTime entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);Method setUpdateUser entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);//通过反射为对象属性赋值setCreateTime.invoke(entity,now);setCreateUser.invoke(entity,currentId);setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);} catch (Exception e) {e.printStackTrace();}}else if(operationType OperationType.UPDATE){//为2个公共字段赋值try {Method setUpdateTime entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_TIME, LocalDateTime.class);Method setUpdateUser entity.getClass().getDeclaredMethod(AutoFillConstant.SET_UPDATE_USER, Long.class);//通过反射为对象属性赋值setUpdateTime.invoke(entity,now);setUpdateUser.invoke(entity,currentId);} catch (Exception e) {e.printStackTrace();}}} } service层代码如下 Override public void save(EmployeeDTO employeeDTO) {Employee employee new Employee();// 使用 BeanUtils 复制相同字段的属性BeanUtils.copyProperties(employeeDTO, employee);// 设置默认密码需要手动设置employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));// 设置默认状态为启用需要手动设置employee.setStatus(1);// 保存到数据库employeeMapper.save(employee); }//简单的总结一下切面编程的大体逻辑 controller很简单往后传dto就行 Service层进行处理 1.新建实体类用于传给数据库保存 2.将dto的内容复制到实体类里面。BeanUtils.copyProperties(categoryDTO,category); 3.补充一些实体类里面没有的内容然后直接交给数据库就行 mapper层的使用Autofill注解进行拼接插入 数据库直接简单的保存就可以了 AutoFill(OperationType.INSERT)Insert(INSERT INTO employee (name, username, password, phone, sex, id_number, status, create_time, update_time, create_user, update_user) VALUES (#{name}, #{username}, #{password}, #{phone}, #{sex}, #{idNumber}, #{status}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser}))void save(Employee employee); 2.需要把前端接受的数据传到两张表的做法 1.Controller层就接受dto就好了然后直接调用service层的方法 示例代码 //新增菜品 PostMapping public Result save(RequestBody DishDTO dishDTO) {dishServcice.save(dishDTO);return Result.success(); }2.service层的话就是首先建立一个实体类把接受到的dto保存到实体类中然后的话就是向实体类里面加东西然后直接把实体类加入到mapper层的一个表里面不过这里要注意 1.Autofill推荐在Mapper层里面加入 2.然后的话应为第二张表需要拿到第一表插入数据库里面自动生成的主键所以的话就是我们需要在第一张表插入的时候加上一个返回主键的语句然后的话我们在插入第二张表的前面的时间就需要先把拿到主键赋值给第二张表的关联键 这里补充说明一下前端是不会给后端传来主键的因为主键是在插入数据库的时候自动生成的 示例代码 public void save(DishDTO dishDTO) {Dish dish new Dish();BeanUtils.copyProperties(dishDTO, dish);dish.setStatus(StatusConstant.ENABLE);// 保存菜品dishMapper.save(dish);// 保存口味设置 dishIddishDTO.getFlavors().forEach(flavor - flavor.setDishId(dish.getId()));dishFlavorMapper.saveFlavors(dishDTO.getFlavors()); } 两个mapper层 AutoFill(OperationType.INSERT) Insert(insert into dish(category_id, name, price, status, description, image, create_time, update_time, create_user, update_user) values (#{categoryId}, #{name}, #{price}, #{status}, #{description}, #{image}, #{createTime}, #{updateTime}, #{createUser}, #{updateUser})) Options(useGeneratedKeys true, keyProperty id) void save(Dish dish); Insert({script,insert into dish_flavor (dish_id, name, value) values ,foreach collectionflavors itemflavor separator,,(#{flavor.dishId}, #{flavor.name}, #{flavor.value}),/foreach,/script }) void saveFlavors(ListDishFlavor flavors);
http://www.w-s-a.com/news/400583/

相关文章:

  • 织梦cms 学校网站模板网站建设中的问题
  • 山东济南网站建设公司制作wordpress模板教程视频教程
  • 档案网站的建设怎样更新网站内容
  • 网站开发项目规划房地产趋势与前景
  • 网上网站开发这个百度的网站怎么做的
  • 南昌市建设局官方网站网龙网络公司地址
  • 自助建站平台源码公司网站谁负责做
  • 旅游的网站怎么做网站流量的主要来源有
  • 高新网站设计找哪家网络科技有限公司实习报告
  • 专业网站建设质量推荐网络销售是做网站推广
  • 旅游网站建设模板wordpress最好最全的教程
  • 网站站长在哪登陆后台网站设计一年费用
  • 济南比较好的网站建设公司邢台信息网123
  • 双峰网站建设漳州优化网站建设
  • app和网站开发的成本虚拟主机是啥
  • 想做一个自己设计公司的网站怎么做的销售培训
  • 南昌网站建设模板合作凡客app哪去了
  • 有免费做网站的吗建设互联网站
  • 北京市保障房建设投资中心网站淄博哪个网站做房屋出赁好
  • 如何做网站的优化网站开发怎么收费
  • 网站的关键词怎么选择2345实用查询
  • 免费的制作网站做图剪片文案网站app接单
  • 中国有多少网站有多少域名上海网站建设网页制作邢台
  • 网站 数据报表如何做室内设计联盟官方网站入口
  • 怎样建设网站论文合肥做网站的软件公司
  • 收款后自动发货的网站是怎么做的怎么看网站后台网页尺寸
  • 谷歌seo引擎优化宁波seo关键词
  • 外贸网站建设需要注意什么seo课程
  • 做信息图网站网站建设的软件介绍
  • 网站开发语言数据库有几种魏县审批建设的网站