1、MybatisPlus的新增,删除,修改
因为上一个模块做了基于MybatisPlus做的分页和条件查询
这个模块添加新增的功能,删除修改的功能
package com.jhj.member.controller;
import com.baomidou.mybatisplus.extension.api.R;
import com.jhj.member.MemberApplication;
import com.jhj.member.base.Result;
import com.jhj.member.entity.Member;
import com.jhj.member.req.MemberREQ;
import com.jhj.member.service.IMemberService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @program: jhjmember
* @ClassName MemberController
* @description:
* @author:蒋皓洁
* @create: 2020-08-05 11:48
* @Version 1.0
**/
@RestController
@RequestMapping("/Member")
public class MemberController {
// 打印日志
Logger logger = LoggerFactory.getLogger(MemberApplication.class);
@Autowired
private IMemberService memberService;
//采用post方式进行传参
@PostMapping("/list/search/{page}/{size}")
public Result seach(@PathVariable("page") Long page,
@PathVariable("size") Long size,
@RequestBody MemberREQ req
) {
logger.info("查询会员列表:page={},size+{}", page, size);
return memberService.seach(page, size, req);
}
//采用mybatisPlus中自带的新增
//新增窗口
@PostMapping
public Result save(@RequestBody Member member) {
boolean b = memberService.save(member);
if (b) {
return Result.ok();
} else {
return Result.error("新增会员失败");
}
}
//采用mybatisPlus中自带的删除
// integer可以接收null类型
//删除窗口
@DeleteMapping("/{id}")
public Result delete(@PathVariable("id") Long id) {
boolean b = memberService.removeById(id);
if (b) {
return Result.ok();
} else {
return Result.error("删除会员失败");
}
}
//采用mybatisPlus的自带的查询
//通过Id来进行查询
@GetMapping("/{id}")
public Result findById(@PathVariable("id") int id) {
Member member = memberService.getById(id);
return Result.ok(member);
}
//通过Id来进行修改
@PutMapping("/{id}")
public Result update(@PathVariable("id") int id,@RequestBody Member member){
return memberService.update(id,member);
}
}
1、新增
//采用mybatisPlus中自带的新增
//新增窗口
@PostMapping
public Result save(@RequestBody Member member) {
boolean b = memberService.save(member);
if (b) {
return Result.ok();
} else {
return Result.error("新增会员失败");
}
}
采用post请求,
json传参,
调用IMemberService 中mybatisPlus自带的save方法
请求地址为:http://127.0.0.1:6666/Member
2、删除
采用delete请求
传入id删除
调用IMemberService 中mybatisPlus自带的removeById方法
//采用mybatisPlus中自带的删除
// integer可以接收null类型
//删除窗口
@DeleteMapping("/{id}")
public Result delete(@PathVariable("id") Long id) {
boolean b = memberService.removeById(id);
if (b) {
return Result.ok();
} else {
return Result.error("删除会员失败");
}
}
3、查询
采用get请求
传入id删除
调用IMemberService 中mybatisPlus自带的getById方法,返回一个对象
/采用mybatisPlus的自带的查询
//通过Id来进行查询
@GetMapping("/{id}")
public Result findById(@PathVariable("id") int id) {
Member member = memberService.getById(id);
return Result.ok(member);
}
4、修改
采用put请求
传入id删除
调用IMemberService 中mybatisPlus自带的updateById方法,返回一个对象
controller层如下
//通过Id来进行修改
@PutMapping("/{id}")
public Result update(@PathVariable("id") int id,@RequestBody Member member){
return memberService.update(id,member);
}
serviceImpl层如下
@Override
public Result update(int id, Member member) {
if (member.getId()==null){
member.setId(id);
}
//i表示修改的条数,采用alt+enter键自动补全代码
int i = baseMapper.updateById(member);
if (i<1){
Result.error("更新失败");
}
return Result.ok();
}
mybatis自动生成代码
在项目下面新建一个子项目 jhj-member-generator
1、添加pom文件依赖
<dependencies>
<!-- 代码生成器核心依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
<!--mybatis-plus必须要配置模板引擎-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
</dependencies>
2、创建一个代码生成的类:CodeGenerator
生成的代码放到哪个工程中
private static String PROJECT_NAME = “jhj-member-api”;
数据库名称修改
private static String DATABASE_NAME = “mxg_member”;
这个是设置代码生成的包路径,下面生成controller,entity。。。。
也可以自定义controller等
pc.setParent(“com.jhj.member”); //父包名,可以设置其他包
点击运行就出来了
package com.jhj;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.util.Scanner;
/**
* @program: jhjmember
* @ClassName generator
* @description:
* @author:蒋皓洁
* @create: 2020-08-18 15:04
* @Version 1.0
**/
public class CodeGenerator {
// 生成的代码放到哪个工程中
private static String PROJECT_NAME = "jhj-member-api";
// 数据库名称
private static String DATABASE_NAME = "mxg_member";
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
// 数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/" + DATABASE_NAME + "?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
mpg.setDataSource(dsc);
// 全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir") + "/";
gc.setOutputDir(projectPath + PROJECT_NAME + "/src/main/java");
gc.setIdType(IdType.AUTO); // 组件生成策略,自增长id
gc.setAuthor("蒋皓洁");//作者
gc.setFileOverride(true); //覆盖现有的
gc.setOpen(false); //是否生成后打开
gc.setDateType(DateType.ONLY_DATE);
mpg.setGlobalConfig(gc);
// 包配置
PackageConfig pc = new PackageConfig();
pc.setParent("com.jhj.member"); //父包名,可以设置其他包
mpg.setPackageInfo(pc);
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setEntityLombokModel(true); //使用lombok
strategy.setEntitySerialVersionUID(true);// 实体类的实现接口Serializable
strategy.setRestControllerStyle(true); // @RestController
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setControllerMappingHyphenStyle(true);//驼峰转联字符
strategy.setTablePrefix("tb_"); // 去掉表前缀实体类,如tb_Member转化过来就是Member
mpg.setStrategy(strategy);
mpg.setTemplateEngine(new FreemarkerTemplateEngine());
mpg.execute();
}
/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (StringUtils.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
}