java增删改查

新增
Constant
package com.itheima.reggie.common;

//常量
public interface Constant {
//session中常量标识
String SESSION_EMPLOYEE = “session_employee”;
//默认初始密码
String INIT_PASSWORD = “123456”;

String SESSION_USER = "session_user";

//用户手机验证按
String USER_PHONE_CODE = "phone:";

}

ResultInfo
//通用返回结果,服务端响应的数据最终都会封装成此对象
@Data
public class ResultInfo implements Serializable {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private Object data; //数据

//成功结果
public static ResultInfo success(Object object) {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.data = object;
    resultInfo.code = 1;
    return resultInfo;
}

//失败结果
public static ResultInfo error(String msg) {
    ResultInfo resultInfo = new ResultInfo();
    resultInfo.msg = msg;
    resultInfo.code = 0;
    return resultInfo;
}

}

EmployeeController
@RestController
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@Autowired
HttpSession httpSession;
//新增
@PostMapping(“/employee”)
public ResultInfo add(@RequestBody Employee employee){
//调用service
employeeService.add(employee);
//返回结果
return ResultInfo.success(null);
/* System.out.println(employee);
return null;*/
}
}

EmployeeService
public interface EmployeeService{
void add(Employee employee);
}

EmployeeServiceImpl
@Autowired
private EmployeeMapper employeeMapper;

EmployeeServiceImpl
@Transactional
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;

//新增
@Override
public void add(Employee employee) {
// 1.补齐参数
// 1-1 id 雪花算法ID生成器:保证id不重复 //id字段手动设置自增(保证唯一) 这里id为bigInt所以要写3L
Long id = IdUtil.getSnowflake(1, 1).nextId();
employee.setId(id);
// 1-2 密码 md5加密
String password = SecureUtil.md5(Constant.INIT_PASSWORD);
employee.setPassword(password);//设置初始密码为123456
// 1-3 员工状态
employee.setStatus(1);
// 创建时间
employee.setCreateTime(new Date());
// 创建人
employee.setUpdateTime(new Date());
employee.setCreateUser(1L);
employee.setUpdateUser(1L);

    // 2.调用mapper新增
    employeeMapper.insert(employee);
}

}

id精度丢失解决方法(数据类型为bigint时,运用雪花算法会出现此问题)
新建工具类JacksonObjectMapper
package com.itheima.reggie.common;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.DateSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.Date;

import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**

  • 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象

  • 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]

  • 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
    */
    public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = “yyyy-MM-dd”;
    public static final String DEFAULT_DATE_TIME_FORMAT = “yyyy-MM-dd HH:mm:ss”;
    public static final String DEFAULT_TIME_FORMAT = “HH:mm:ss”;

    public JacksonObjectMapper() {
    super();
    //收到未知属性时不报异常
    this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

     //反序列化时,属性不存在的兼容处理
     this.getDeserializationConfig().withoutFeatures(FAIL_ON_UNKNOWN_PROPERTIES);
    
     //自定义转换规则
     SimpleModule simpleModule = new SimpleModule()
             .addSerializer(BigInteger.class, ToStringSerializer.instance)//将BigInteger转换为String
             .addSerializer(Long.class, ToStringSerializer.instance)//将Long转换成String
             .addSerializer(Date.class, new DateSerializer(false, new SimpleDateFormat(DEFAULT_DATE_FORMAT))); // 将Date转为指定格式字符串
     this.registerModule(simpleModule);
    

    }
    }

WebMvcConfig
package com.itheima.reggie.config;

import com.itheima.reggie.common.JacksonObjectMapper;
import com.itheima.reggie.interceptor.LoginCheckInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
registry.addResourceHandler(“/backend/**”).addResourceLocations(“classpath:/backend/”);
}

//登录拦截
@Autowired
private LoginCheckInterceptor loginCheckInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**")
            .excludePathPatterns("/backend/**")
            .excludePathPatterns("/employee/login")
            .excludePathPatterns("/employee/logout");
}
//消息转换器配置
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
    //创建消息转换器对象
    MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
    //设置对象转换器,底层使用Jackson将Java对象转为json
    messageConverter.setObjectMapper(new JacksonObjectMapper());
    //将上面的消息转换器对象追加到mvc框架的转换器集合中
    converters.add(0, messageConverter);
}

}

修改
EmployeeController
@RestController
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@Autowired
HttpSession httpSession;

//修改员工
@PutMapping(“/employee”)
public ResultInfo update(@RequestBody Employee employee){
//1.接收参数
//2.调用service修改
employeeService.update(employee);
//3.返回结果
return ResultInfo.success(null);
/System.out.println(employee);
return null;
/
}
}

EmployeeService
public interface EmployeeService{
void update(Employee employee);

}

EmployeeServiceImpl
@Transactional
@Service
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeMapper employeeMapper;
//修改员工
@Override
public void update(Employee employee) {
//1.补齐参数
employee.setUpdateTime(new Date());
employee.setUpdateUser(1L);//暂时写死1L
//2.调用mapper
employeeMapper.updateById(employee);

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值