Công nhân quản lý
Tân tăng công nhân
Controller:
@PostMapping//post loại hình thỉnh cầu
@ApiOperation("Tăng thêm công nhân")
publicResultsave(@RequestBodyEmployeeDTOemployeeDTO){
log.info("Tân tăng công nhân {}",employeeDTO);
employeeService.save(employeeDTO);
returnResult.success();
}
Số hiệu hoàn thiện – tồn tại vấn đề
Vấn đề 1.Khống chế đài tung ra dị thường, trình tự xử lý. Sử dụngToàn cục dị thường xử lý khí
Xử lý sql dị thường Duplicate entry 'zhangsan’ for key 'employee.idx username
Toàn cục dị thường xử lý khí: GlobalExceptionHandler.java
@ExceptionHandler
publicResultexceptionHandler(SQLIntegrityConstraintViolationExceptionex){
// xử lý sql dị thường Duplicate entry 'zhangsan’ for key 'employee.idx username
Stringmessage=ex.getMessage();
if(message.contains("Duplicate entry")){
String[]split=message.split("");
Stringusername=split[2];// bắt được username
Stringmsg=username+MessageConstant.ALREADY_EXISTS;// username đã tồn tại -- vì quy phạm sử dụng, dùng cái đại lượng không đổi tới trích dẫn
returnResult.error(msg);
}else{
returnResult.error(MessageConstant.UNKNOWN_ERROR);// không biết sai lầm nhắc nhở tin tức
}
}
Vấn đề 2.
Động thái thu hoạch đăng nhập người dùng ID
Trước xem một chútCăn cứ vào JWT lệnh bài chứng thực lưu trình
http thỉnh cầu báo văn cùng hưởng ứng báo văn
http báo văn ba cái tạo thành bộ phận http báo văn là một cái cách thức hóa số liệu khối. Báo văn loại hình: Bao gồm bản cài đặtThỉnh cầu,ServerHưởng ứng.
http thỉnh cầu báo văn từ 3 cái bộ phận tạo thành:
- Thỉnh cầu hành ( start line ): Từ thỉnh cầu phương pháp (GET/POST/PUT), thỉnh cầu URL ( không bao gồm vực danh |, HTTP hiệp nghị phiên bản tạo thành
- Thỉnh cầu đầu ( header ): Thỉnh cầu phần đầu từ mấu chốt tự / giá trị đối tạo thành, mỗi hành một đôi; chủ yếu bao hàm Content-Length tiêu đầu: Thật thể chiều dài, Content-Tyep tiêu đầu: Thật thể truyền thông loại hình
- Thỉnh cầu thể ( body ): GET ( từ server thu hoạch số liệu ) thỉnh cầu thể vì không, POST ( hướng server gửi đi muốn xử lý số liệu ) có số liệu
ThreadLocal
Cũng không phải một cái thread, mà là Thread bộ phận lượng biến đổi.
Mỗi cái tuyến trình độc hưởng một phần tồn trữ không gian, có tuyến trình cách ly hiệu quả, chỉ có tại tuyến trình nội mới có thể thu hoạch đến đối ứng giá trị, tuyến trình ngoại không được.
Bản cài đặt khởi xướng mỗi một lần thỉnh cầu, Tomcat server sẽ phân phối một cái tiến trình, sau đó đơn độc chấp hành số hiệu.Mỗi lần thỉnh cầu đều là một cái đơn độc tuyến trình.
Cũng chính là ởCái này tuyến trình nội có thể cùng chung một phần tồn trữ không gian.
Cho nên chúng ta có thể đem cấp trước mặt người dùng ID tồn đến cái này không gian nội.
JwtTokenAdminInterceptor.java // JWT chặn lại khí
@Autowired
privateJwtPropertiesjwtProperties;
publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{
// phán đoán trước mặt chặn lại đến chính là Controller phương pháp vẫn là mặt khác tài nguyên
if(!(handlerinstanceofHandlerMethod)){
// trước mặt chặn lại đến không phải động thái phương pháp, trực tiếp cho đi
returntrue;
}
//1, từ thỉnh cầu đầu trung thu hoạch lệnh bài
Stringtoken=request.getHeader(jwtProperties.getAdminTokenName());
//2, kiểm tra lệnh bài
try{
log.info("jwt kiểm tra:{}",token);
Claimsclaims=JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(),token);
LongempId=Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());
log.info("Trước mặt công nhân id: {}",empId);
BaseContext.setCurrentId(empId);// đem ID để vào tuyến trình không gian
//3, thông qua, cho đi
returntrue;
}catch(Exceptionex){
//4, không thông qua, hưởng ứng 401 trạng thái mã
response.setStatus(401);
returnfalse;
}
}
Thượng đồ chính là thuyên chuyển phương pháp này loại đem công nhân ID tồn đến trước mặt tuyến trình không gian trung.
Hạ đồ là tăng thêm công nhân tin tức Service trung phương pháp thực hiện, trọng điểm ở chỗ từ tuyến trình không gian lấy ra đăng nhập người dùng ID
Service:
publicvoidsave(EmployeeDTOemployeeDTO){
Employeeemployee=newEmployee();
// đệ trình cấp cơ sở dữ liệu tốt nhất là entity
BeanUtils.copyProperties(employeeDTO,employee);// tiến hành một cái thuộc tính phục chế
// bỏ thêm vào tự đoạn
employee.setStatus(StatusConstant.ENABLE);
employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
// thông qua ThreadLocal đạt được trước mặt người dùng id
employee.setCreateUser(BaseContext.getCurrentId());
employee.setUpdateUser(BaseContext.getCurrentId());
employeeMapper.insert(employee);
}
Công nhân phân trang tuần tra
Controller:
@GetMapping("/page")//get loại hình thỉnh cầu
@ApiOperation("Công nhân phân trang tuần tra")
publicResult<PageResult>page(EmployeePageQueryDTOemployeePageQueryDTO){// số liệu không phải json, không cần chú giải
PageResultpageResult=employeeService.pageQuery(employeePageQueryDTO);
returnResult.success(pageResult);
}
PageHelper cắm kiện tới phụ trợ số hiệu
Service:
@Override
publicPageResultpageQuery(EmployeePageQueryDTOemployeePageQueryDTO){
//select * from employee linit 0,10
// thuyên chuyển PageHelper bắt đầu phân trang tuần tra số trang, mỗi trang ký lục số
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
Page<Employee>page=employeeMapper.selectByPage(employeePageQueryDTO);
// phản hồi chính là Page
// kế tiếp xử lý một chút, biến thành pageresult, yêu cầu hai cái tham số
longtotal=page.getTotal();
List<Employee>result=page.getResult();
returnnewPageResult(total,result);
}
mapper:
Không cần chú giải, động thái sql sử dụng ánh xạ văn kiện
Ở resource folder đều là xml văn kiện<select>
Nhãn id là mapper trung đối ứng phương pháp danh, resultType là truyền vào tham số loại hình.
<selectid="selectByPage"resultType="com.sky.entity.Employee">
select * from employee
<where>
<iftest="name!=null and name!=''">
and name like concat('%',#{name},'%')<!-- mơ hồ tuần tra like -->
</if>
</where>
order by create_time desc<!-- sáng tạo thời gian hàng tự -->
</select>
Phương thức một: Ở thật thể loại thêm
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
privateLocalDateTimecreateTime;
//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
privateLocalDateTimeupdateTime;
Phương thức nhị: Mở rộng tin tức thay đổi khí, ở phối trí loại trung
Trọng viết phụ loại phương pháp
protectedvoidextendMessageConverters(List<HttpMessageConverter<?>>converters){
// sáng tạo một tin tức thay đổi khí
MappingJackson2HttpMessageConverterconverter=newMappingJackson2HttpMessageConverter();
// yêu cầu vì tin tức thay đổi khí thiết trí một cái đối tượng thay đổi khí, đối tượng thay đổi khí có thể đem Java đối tượng danh sách hóa thành json số liệu
converter.setObjectMapper(newJacksonObjectMapper());
// đem chính mình tin tức chuyển hóa khí gia nhập vật chứa trung
converters.add(0,converter);//0 vì hướng dẫn tra cứu, làm cái này thay đổi khí bài phía trước
}
Bắt đầu dùng cấm dùng công nhân tài khoản
Controller:
@PostMapping("/status/{status}")
@ApiOperation("Bắt đầu dùng cấm dùng công nhân tài khoản")
publicResultstartOrStop(@PathVariable("status")Integerstatus,Longid){
employeeService.startOrStop(status,id);
returnResult.success();
}
Service: Bản chất là sửa chữa công nhân Status tức update
publicvoidstartOrStop(Integerstatus,Longid){
Employeeemployee=// bản chất chính là sáng tạo một cái thật thể loại đối tượng
Employee.builder()// xây dựng khí đối tượng
.id(id)// phương pháp danh cùng thuộc tính danh nhất trí
.status(status)
.build();
employeeMapper.update(employee);
}
Căn cứ chủ kiện động thái sửa chữa, cho nên lại đến xml
<!-- bởi vì ở yml văn kiện trung thanh minh biệt danh bao rà quét, cho nên nơi này có thể không sử dụng toàn loại danh -->
<updateid="update"parameterType="Employee">
update employee
<set>
<iftest="name!= null">name = #{name},</if>
<iftest="username!= null">username = #{username},</if>
<iftest="password!= null">password = #{password},</if>
<iftest="phone!= null">phone = #{phone},</if>
<iftest="sex!= null">sex = #{sex},</if>
<iftest="idNumber!= null">id_number = #{idNumber},</if>
<iftest="updateTime!= null">update_time = #{updateTime},</if>
<iftest="updateUser!= null">update_user = #{updateUser},</if>
<iftest="status!= null">status = #{status},</if>
</set>
where id = #{id}
</update>
Biên tập công nhân
Tuần tra công nhân tin tức:
@GetMapping("/{id}")
@ApiOperation("Căn cứ Id tuần tra công nhân")
publicResult<Employee>getById(@PathVariableLongid){// thêm cái đường nhỏ tham số chú giải @PathVariable tới đến id
Employeeemployee=employeeService.getById(id);
returnResult.success(employee);
}
@Override
publicEmployeegetById(Longid){
Employeeemployee=employeeMapper.getById(id);
employee.setPassword("****");// tra ra mật mã, cấp đằng trước truyền ****
returnemployee;
}
@Select("select * from employee where id=#{id}")
EmployeegetById(Longid);
Biên tập công nhân tin tức:
@PutMapping
@ApiOperation("Biên tập công nhân tin tức")
publicResultupdate(@RequestBodyEmployeeDTOemployeeDTO){
employeeService.update(employeeDTO);
returnResult.success();
}
publicvoidupdate(EmployeeDTOemployeeDTO){
Employeeemployee=newEmployee();// đối tượng thuộc tính copy
BeanUtils.copyProperties(employeeDTO,employee);
employee.setUpdateTime(LocalDateTime.now());
employee.setUpdateUser(BaseContext.getCurrentId());
employeeMapper.update(employee);
}
Dẫn vào phân loại mô khối công năng số hiệu
Trực tiếp dán đến đối ứng folder ( ở IDEA thao tác )
Dẫn vào xong tay động biên dịch một chút