mybatisplus环境的搭建和crud接口的简单使用以及代码构造器的简单尝试(自用,备忘)

发布时间 2023-07-04 14:45:35作者: YTARO

1.依赖引入

支持mysql 5.7的mysql-connector-java

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

mybatisplus

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

mybatisplus-generator

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.2.0</version>
</dependency>

 


 2.properties有关数据库和MP的配置

spring.datasource.url=jdbc:mysql://localhost:端口号/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis-plus.mapper-locations=classpath:mapper/*.xml

3.CRUD接口的简单使用(推荐使用postman进行测试)

package com.example.demo.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.example.demo.entity.User;
import com.example.demo.generator.UserGenerator;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.sql.Wrapper;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/selectById")
    public User selectById(@RequestParam(value = "id") Integer id){
        return userService.getById(id);
    }
    @RequestMapping("/selectList")
    public List<User> selectList(){
        //使用eq返回部分字段
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("name","age").like("name","J");
        return userService.list(queryWrapper);
    }
    //使用构造器进行查询
    @RequestMapping("/selectByName")
    public User selectByName(@RequestParam("name") String name){
        //使用eq进行单条件查询
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name",name);

        //使用实体类进行单条件查询
//        User user=new User();
//        user.setName(name);
//        QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);

        //使用eq实现多条件查询
//        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//        queryWrapper.between("age",15,20)
//                .like("name",name);


        return userService.getOne(queryWrapper);
    }
    @RequestMapping("/updateOrInsert")
    public boolean updateOrInsert(@RequestBody User user){
        //插入或更新函数,根据传入实体类id值判断进行哪个操作
        return userService.saveOrUpdate(user);
    }
    //调用代码生成器的方法
    @RequestMapping("/generator")
    public void generator(){
        UserGenerator userGenerator=new UserGenerator();
        userGenerator.generator();
    }

}

3.生成器具体方法的实现

package com.example.demo.generator;

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;

public class UserGenerator {
    public void generator(){
        //创建生成器
        AutoGenerator mpg = new AutoGenerator();
        //全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath + "/src/main/java");
        gc.setAuthor("why");
        gc.setOpen(false); //生成后是否打开资源管理器
        gc.setFileOverride(false); //重新生成时文件是否覆盖
        gc.setServiceName("%sService"); //去掉Service接口的首字母I
        gc.setIdType(IdType.ID_WORKER_STR); //主键策略
        gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
        gc.setSwagger2(false);//开启Swagger2模式
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("用户名");
        dsc.setPassword("密码");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName(null); //模块名
        pc.setParent("com.example.demo");  //整体生成的代码根目录
        pc.setController("controller");    //controller根目录名字,如果没有则创建,有的话则自动在这个目录下生成。
        pc.setEntity("entity");            //实体类根目录
        pc.setService("service");          //服务层根目录,不配置impl实现类的目录的话,会在service根目录下创建一个impl的目录,在该目录下生成实现类
        pc.setMapper("mapper");            //mapper根目录
        mpg.setPackageInfo(pc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude("表名");//对那一张表生成代码
        strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
        strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
        strategy.setRestControllerStyle(true); //restful api风格控制器
        strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
        mpg.setStrategy(strategy);

        // 执行
        mpg.execute();
    }
}