feat commit

测试mybatis-plus
server_2024_3_23_liyuan
玉安君 2024-03-25 22:35:44 +08:00
parent 094c62be8d
commit 866981adea
17 changed files with 642 additions and 6 deletions

View File

@ -11,8 +11,9 @@
<artifactId>zhilian-mybatis-plus</artifactId> <artifactId>zhilian-mybatis-plus</artifactId>
<description> <description>
zhilian-modules-file文件服务 zhilian-mybatis-plus测试
</description> </description>
<dependencies> <dependencies>
@ -67,14 +68,25 @@
<artifactId>zhilian-common-system</artifactId> <artifactId>zhilian-common-system</artifactId>
</dependency> </dependency>
<!-- Mysql Connector -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>com.zhilian</groupId>
<artifactId>zhilian-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.zhilian</groupId>
<artifactId>zhilian-common-log</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>${project.artifactId}</finalName> <finalName>${project.artifactId}</finalName>
<plugins> <plugins>

View File

@ -0,0 +1,23 @@
package com.zhilian.mybatis_plus;
import com.zhilian.common.security.annotation.EnableCustomConfig;
import com.zhilian.common.security.annotation.EnableMyFeignClients;
import com.zhilian.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:51
*/
@EnableCustomConfig
@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class,args);
}
}

View File

@ -0,0 +1,87 @@
package com.zhilian.mybatis_plus.controller;
import com.zhilian.common.core.domain.Result;
import com.zhilian.common.core.web.controller.BaseController;
import com.zhilian.common.core.web.page.TableDataInfo;
import com.zhilian.common.log.enums.BusinessType;
import com.zhilian.common.security.annotation.RequiresPermissions;
import com.zhilian.common.security.utils.SecurityUtils;
import com.zhilian.mybatis_plus.domain.Clazz;
import com.zhilian.mybatis_plus.service.ClazzService;
import com.zhilian.common.log.annotation.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:45
*/
@RestController
@RequestMapping("/clazz")
public class ClazzController extends BaseController{
@Autowired
private ClazzService clazzService;
/**
*
* @param clazz
* @return
*/
@GetMapping("/list")
public Result<TableDataInfo<Clazz>> list (Clazz clazz) {
startPage();
List<Clazz> list = clazzService.pageQuery(clazz);
return getDataTable(list);
}
/**
*
* @param clazz
* @return
*/
@Log(title = "班级管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add (@Validated @RequestBody Clazz clazz) {
if (!clazzService.checkConfigKeyUnique(clazz)) {
return error("新增参数'" + clazz.getName() + "'失败,班级名称已存在");
}
clazz.setCreateBy(SecurityUtils.getUsername());
return toAjax(clazzService.save(clazz));
}
/**
*
*/
@Log(title = "班级管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit (@Validated @RequestBody Clazz clazz) {
if (!clazzService.checkConfigKeyUnique(clazz)) {
return error("修改参数'" + clazz.getName() + "'失败,班级名称已存在");
}
clazz.setUpdateBy(SecurityUtils.getUsername());
return toAjax(clazzService.updateById(clazz));
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "班级管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{clazzIds}")
public Result remove (@PathVariable Long[] clazzIds) {
clazzService.removeBatchByIds(Arrays.asList(clazzIds));
return success();
}
}

View File

@ -0,0 +1,86 @@
package com.zhilian.mybatis_plus.controller;
import com.zhilian.common.core.domain.Result;
import com.zhilian.common.core.web.controller.BaseController;
import com.zhilian.common.core.web.page.TableDataInfo;
import com.zhilian.common.log.annotation.Log;
import com.zhilian.common.log.enums.BusinessType;
import com.zhilian.common.security.annotation.RequiresPermissions;
import com.zhilian.common.security.utils.SecurityUtils;
import com.zhilian.mybatis_plus.domain.Student;
import com.zhilian.mybatis_plus.domain.response.StudentRes;
import com.zhilian.mybatis_plus.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
* @version:
* @Author: LiYuan
* @description:
* @date: 2024/3/25 15:12
*/
@RestController
@RequestMapping("/student")
public class StudentController extends BaseController {
@Autowired
private StudentService studentService;
/**
*
* @param student
* @return
*/
@GetMapping("/list")
public Result<TableDataInfo<StudentRes>> list (Student student) {
startPage();
List<StudentRes> list = studentService.pageQuery(student);
return getDataTable(list);
}
/**
*
* @param student
* @return
*/
@Log(title = "学生管理", businessType = BusinessType.INSERT)
@PostMapping
public Result add (@Validated @RequestBody Student student) {
if (!studentService.checkConfigKeyUnique(student)) {
return error("新增参数'" + student.getName() + "'失败,学生名称已存在");
}
student.setCreateBy(SecurityUtils.getUsername());
return toAjax(studentService.save(student));
}
/**
*
*/
@Log(title = "班级管理", businessType = BusinessType.UPDATE)
@PutMapping
public Result edit (@Validated @RequestBody Student student) {
if (!studentService.checkConfigKeyUnique(student)) {
return error("修改参数'" + student.getName() + "'失败,学生名称已存在");
}
student.setUpdateBy(SecurityUtils.getUsername());
return toAjax(studentService.updateById(student));
}
/**
*
*/
@RequiresPermissions("system:config:remove")
@Log(title = "学生管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{studentIds}")
public Result remove (@PathVariable Long[] studentIds) {
studentService.removeBatchByIds(Arrays.asList(studentIds));
return success();
}
}

View File

@ -0,0 +1,70 @@
package com.zhilian.mybatis_plus.domain;//package com.zhilian.mybatis_plus.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhilian.common.core.annotation.Excel;
import com.zhilian.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:37
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_clazz")
public class Clazz extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "班级编号",cellType = Excel.ColumnType.NUMERIC)
@TableId(type = IdType.AUTO)
private Long id;
/**
*
*/
private String name;
// /**
// * 创建者
// */
// private String createBy;
//
// /**
// * 创建时间
// */
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date createTime;
//
// /**
// * 更新者
// */
// private String updateBy;
//
// /**
// * 更新时间
// */
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date updateTime;
}

View File

@ -0,0 +1,58 @@
package com.zhilian.mybatis_plus.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhilian.common.core.annotation.Excel;
import com.zhilian.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:37
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_student")
public class Student extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "学生编号",cellType = Excel.ColumnType.NUMERIC)
@TableId(type = IdType.AUTO)
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String photo;
/**
*
*/
private Long tClazz;
/**
*
*/
private Integer sex;
}

View File

@ -0,0 +1,32 @@
package com.zhilian.mybatis_plus.domain.response;
import com.zhilian.mybatis_plus.domain.Clazz;
import com.zhilian.mybatis_plus.domain.Student;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @version:
* @Author: LiYuan
* @description: +
* @date: 2024/3/25 15:17
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class StudentRes {
/**
*
*/
private Student student;
/**
*
*/
private Clazz clazz;
}

View File

@ -0,0 +1,15 @@
package com.zhilian.mybatis_plus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhilian.mybatis_plus.domain.Clazz;
import org.apache.ibatis.annotations.Mapper;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:48
*/
@Mapper
public interface ClazzMapper extends BaseMapper<Clazz> {
}

View File

@ -0,0 +1,16 @@
package com.zhilian.mybatis_plus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhilian.mybatis_plus.domain.Student;
import org.apache.ibatis.annotations.Mapper;
/**
* @version:
* @Author: LiYuan
* @description:
* @date: 2024/3/25 15:14
*/
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
}

View File

@ -0,0 +1,31 @@
package com.zhilian.mybatis_plus.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhilian.mybatis_plus.domain.Clazz;
import java.util.List;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:46
*/
public interface ClazzService extends IService<Clazz> {
/**
*
* @param clazz
* @return
*/
List<Clazz> pageQuery(Clazz clazz);
/**
*
* @param clazz
* @return
*/
boolean checkConfigKeyUnique(Clazz clazz);
}

View File

@ -0,0 +1,29 @@
package com.zhilian.mybatis_plus.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhilian.mybatis_plus.domain.Student;
import com.zhilian.mybatis_plus.domain.response.StudentRes;
import java.util.List;
/**
* @version:
* @Author: LiYuan
* @description:
* @date: 2024/3/25 15:13
*/
public interface StudentService extends IService<Student> {
/**
*
* @param student
* @return
*/
List<StudentRes> pageQuery(Student student);
/**
*
* @param student
* @return
*/
boolean checkConfigKeyUnique(Student student);
}

View File

@ -0,0 +1,59 @@
package com.zhilian.mybatis_plus.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhilian.common.core.utils.StringUtils;
import com.zhilian.mybatis_plus.domain.Clazz;
import com.zhilian.mybatis_plus.mapper.ClazzMapper;
import com.zhilian.mybatis_plus.service.ClazzService;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
/**
* @version:
* @Author: Seer
* @description:
* @date: 2024/3/24 10:46
*/
@Service
public class ClazzServiceImpl extends ServiceImpl<ClazzMapper,Clazz> implements ClazzService {
/**
*
* @param clazz
* @return
*/
@Override
public List<Clazz> pageQuery(Clazz clazz) {
LambdaQueryWrapper<Clazz> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(clazz.getName())){
queryWrapper.like(Clazz::getName,clazz.getName());
}
Object beginTime = clazz.getParams().get("beginTime");
if (Objects.nonNull(beginTime) && beginTime instanceof Date beginDate){
queryWrapper.gt(Clazz::getCreateTime, beginDate);
}
Object endTime = clazz.getParams().get("endTime");
if (Objects.nonNull(endTime) && endTime instanceof Date endDate){
queryWrapper.lt(Clazz::getCreateTime, endDate);
}
return this.list(queryWrapper);
}
/**
*
* @param clazz
* @return
*/
@Override
public boolean checkConfigKeyUnique(Clazz clazz) {
LambdaQueryWrapper<Clazz> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Clazz::getName, clazz.getName());
return this.count(queryWrapper) > 0;
}
}

View File

@ -0,0 +1,94 @@
package com.zhilian.mybatis_plus.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.zhilian.common.core.utils.StringUtils;
import com.zhilian.mybatis_plus.domain.Clazz;
import com.zhilian.mybatis_plus.domain.Student;
import com.zhilian.mybatis_plus.domain.response.StudentRes;
import com.zhilian.mybatis_plus.mapper.StudentMapper;
import com.zhilian.mybatis_plus.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @version:
* @Author: LiYuan
* @description:
* @date: 2024/3/25 15:13
*/
@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Autowired
private ClazzServiceImpl clazzService;
/**
*
*
* @param student
* @return
*/
@Override
public List<StudentRes> pageQuery(Student student) {
//获取班级列表
List<Clazz> clazzList = clazzService.pageQuery(new Clazz() {{
setId(student.getTClazz());
}});
//获取学生列表
LambdaQueryWrapper<Student> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(student.getName())) {
queryWrapper.like(Student::getName, student.getName());
}
if (StringUtils.isNotNull(student.getTClazz()) && 0 != student.getTClazz()) {
queryWrapper.like(Student::getTClazz, student.getTClazz());
}
Object beginTime = student.getParams().get("beginTime");
if (Objects.nonNull(beginTime) && beginTime instanceof Date beginDate) {
queryWrapper.gt(Student::getCreateTime, beginDate);
}
Object endTime = student.getParams().get("endTime");
if (Objects.nonNull(endTime) && endTime instanceof Date endDate) {
queryWrapper.lt(Student::getCreateTime, endDate);
}
List<Student> list = this.list(queryWrapper);
//将学生对象与班级对象进行关联
List<StudentRes> studentRes = list.stream().map(stu -> {
StudentRes res = new StudentRes();
Long tClazz = stu.getTClazz();
Optional<Clazz> foundClazz = clazzList.stream().filter(clazz -> Objects.equals(clazz.getId(), tClazz)).findFirst();
//未找到班级对象则说明脏数据出现
if (!foundClazz.isPresent()) {
throw new RuntimeException("班级数据异常");
}
Clazz targetClass = foundClazz.get();
res.setStudent(stu);
res.setClazz(targetClass);
return res;
}).collect(Collectors.toList());
return studentRes;
}
/**
*
* @param student
* @return
*/
@Override
public boolean checkConfigKeyUnique(Student student) {
LambdaQueryWrapper<Student> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Student::getName, student.getName());
return this.count(queryWrapper) > 0;
}
}

View File

@ -1,12 +1,12 @@
# Tomcat # Tomcat
server: server:
port: 9202 port: 9301
# Spring # Spring
spring: spring:
application: application:
# 应用名称 # 应用名称
name: zhilian-gmybatis-plus name: zhilian-mybatis
profiles: profiles:
# 环境配置 # 环境配置
active: dev active: dev

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhilian.mybatis_plus.mapper.ClazzMapper">
<resultMap id="ClazzResult" type="com.zhilian.mybatis_plus.domain.Clazz">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
</resultMap>
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhilian.mybatis_plus.mapper.StudentMapper">
</mapper>

View File

@ -80,6 +80,7 @@ public class SysConfigController extends BaseController {
return toAjax(configService.save(config)); return toAjax(configService.save(config));
} }
/** /**
* *
*/ */