注解
逻辑删除
@TableLogic
private Integer isDeleted;
pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
插件
@Configuration
@EnableTransactionManagement
@MapperScan("com.shengun.eduservice.mapper")
public class MyBatisPlusConfig {
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
自动注入
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate", new Date(), metaObject);
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
}
实操
mybatis-plus 逆向生成代码
package com.achang.eduservice;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.Test;
public class CodeGenerator {
@Test
public void run() {
AutoGenerator mpg = new AutoGenerator();
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir("F:\\Java\\idea-workpace\\guli-parent\\service\\service-edu" + "/src/main/java");
gc.setAuthor("shengun");
gc.setOpen(false);
gc.setFileOverride(false);
gc.setServiceName("%sService");
gc.setIdType(IdType.ID_WORKER_STR);
gc.setDateType(DateType.ONLY_DATE);
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
PackageConfig pc = new PackageConfig();
pc.setModuleName("eduservice");
pc.setParent("com.shengun");
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
mpg.setPackageInfo(pc);
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("edu_teacher");
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setTablePrefix(pc.getModuleName() + "_");
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
mpg.setStrategy(strategy);
mpg.execute();
}
}
注解
实体类
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduTeacher对象", description="讲师")
public class EduTeacher implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "讲师ID")
@TableId(value = "id", type = IdType.ID_WORKER_STR)
private String id;
@ApiModelProperty(value = "讲师姓名")
private String name;
@ApiModelProperty(value = "讲师简介")
private String intro;
@ApiModelProperty(value = "讲师资历,一句话说明讲师")
private String career;
@ApiModelProperty(value = "头衔 1高级讲师 2首席讲师")
private Integer level;
@ApiModelProperty(value = "讲师头像")
private String avatar;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic
private Integer isDeleted;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
@ApiModelProperty(value = "更新时间")
private Date gmtModified;
}
mapper
@Repository
public interface EduTeacherMapper extends BaseMapper<EduTeacher> {
}
mapper.xml
<?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.shengun.eduservice.mapper.EduTeacherMapper">
</mapper>
service
public interface EduTeacherService extends IService<EduTeacher> {
public void pageQuery(Page<EduTeacher> pageParam, TeacherQuery teacherQuery);
}
serviceImpl
@Service
public class EduTeacherServiceImpl extends ServiceImpl<EduTeacherMapper, EduTeacher> implements EduTeacherService {
@Autowired
private EduTeacherMapper eduTeacherMapper;
@Override
public void pageQuery(Page<EduTeacher> pageParam, TeacherQuery teacherQuery) {
QueryWrapper<EduTeacher> queryWrapper = new QueryWrapper<>();
String name = teacherQuery.getName();
Integer level = teacherQuery.getLevel();
String begin = teacherQuery.getBegin();
String end = teacherQuery.getEnd();
if(!StringUtils.isEmpty(name)){
queryWrapper.like("name", name);
}
if(!StringUtils.isEmpty(level)){
queryWrapper.eq("level", level);
}
if(!StringUtils.isEmpty(begin)){
queryWrapper.ge("gmt_create", begin);
}
if(!StringUtils.isEmpty(end)){
queryWrapper.le("gmt_modified", end);
}
eduTeacherMapper.selectPage(pageParam, queryWrapper);
}
}
controller
package com.shengun.eduservice.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shengun.commonutils.R;
import com.shengun.eduservice.entity.EduTeacher;
import com.shengun.eduservice.entity.vo.TeacherQuery;
import com.shengun.eduservice.service.EduTeacherService;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/eduservice/edu-teacher")
@Slf4j
@ApiModel(value="教师管理",description = "讲师管理")
public class EduTeacherController {
@Autowired
private EduTeacherService eduTeacherService;
@ApiOperation(value="所有讲师列表")
@GetMapping("/findAll")
public R list(){
List<EduTeacher> list = eduTeacherService.list(null);
return R.ok().data("items", list);
}
@ApiOperation(value ="根据ID删除讲师")
@DeleteMapping("/{id}")
public R deleteTeacherById(@ApiParam(value="讲师ID") @PathVariable("id") String id) {
log.info("##########获取要删除id值:" + id);
return eduTeacherService.removeById(id) ? R.ok() : R.error();
}
@GetMapping("/pageList/{current}/{limit}")
@ApiOperation(value = "分页讲师列表")
public R pageList(@ApiParam(name = "current", value = "当前页码", required = true) @PathVariable("current") Long current,
@ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable("limit") Long limit) {
Page<EduTeacher> pageParam = new Page<>(current, limit);
eduTeacherService.page(pageParam, null);
List<EduTeacher> records = pageParam.getRecords();
long total = pageParam.getTotal();
return R.ok().data("total", total).data("rows", records);
}
@ApiOperation(value = "多条件查询讲师带分页GET")
@GetMapping("/pageTeacherConditionGet/{current}/{limit}")
public R pageTeacherConditionGet(@ApiParam(name = "current", value = "当前页码", required = true) @PathVariable("current") Long current,
@ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable("limit") Long limit,
TeacherQuery teacherQuery){
Page<EduTeacher> pageParam = new Page<>();
eduTeacherService.pageQuery(pageParam, teacherQuery);
int i = 10/0;
List<EduTeacher> records = pageParam.getRecords();
long total = pageParam.getTotal();
return R.ok().data("total",total).data("rows",records);
}
@ApiOperation(value = "多条件查询讲师带分页POST")
@PostMapping("/pageTeacherConditionPost/{current}/{limit}")
public R pageTeacherConditionPost(@ApiParam(name = "current", value = "当前页码", required = true) @PathVariable("current") Long current,
@ApiParam(name = "limit", value = "每页记录数", required = true) @PathVariable("limit") Long limit,
@RequestBody(required = false) TeacherQuery teacherQuery){
Page<EduTeacher> pageParam = new Page<>();
eduTeacherService.pageQuery(pageParam, teacherQuery);
List<EduTeacher> records = pageParam.getRecords();
long total = pageParam.getTotal();
return R.ok().data("total",total).data("rows",records);
}
@ApiOperation(value="新增讲师")
@PostMapping("/save")
public R save(@RequestBody EduTeacher eduTeacher){
boolean save = eduTeacherService.save(eduTeacher);
return save ? R.ok() : R.error();
}
@GetMapping("{id}")
@ApiOperation(value="根据id查询")
public R getById(@PathVariable("id") String id) {
EduTeacher eduTeacher = eduTeacherService.getById(id);
return R.ok().data("item", eduTeacher);
}
@ApiOperation(value="根据ID修改教师信息")
@PostMapping("/updateById")
public R updateById(@RequestBody EduTeacher eduTeacher){
boolean flag = eduTeacherService.updateById(eduTeacher);
return flag?R.ok():R.error();
}
}