基于MybatisPlus的增删改查,与Mybatis自动生成代码

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 + "!");
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值