mybatis-plus

介绍

MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,对于简单表查询无需再写sql,提供了丰富了API, 大大提高开发效率。开发人员只关注于业务,繁琐的分层一键生成,无需在这些分层上浪费时间。
下面一起来构建一个项目

数据库

DROP TABLE IF EXISTS user;
CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    RIMARY KEY (id)
);
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');


依赖

<!--springboot -->
<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.2.6.RELEASE</version>
     <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
   <dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.0.5</version>
   </dependency>
  <dependency>
       <groupId>org.apache.velocity</groupId>
       <artifactId>velocity-engine-core</artifactId>
       <version>2.2</version>
   </dependency>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
   </dependency>
  <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
 <dependency>
       <groupId>io.springfox</groupId>
       <artifactId>springfox-swagger2</artifactId>
       <version>2.9.2</version>
   </dependency>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-devtools</artifactId>
       <scope>runtime</scope>
       <optional>true</optional>
   </dependency>
 <!--spring2.x 使用8以上数据库-->
  <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <scope>runtime</scope>
   </dependency>
 
<!-- IDEA中需要安装lombok插件!  -->
   <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <optional>true</optional>
   </dependency>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
   </dependency>
</dependencies>

配置文件

application.properties

#server-port
server.port=8000
#datasource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_mp?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

自动生成配置

public void autoConfig(){

   // 模块名
    String moduleName = "test";

    // 1、代码生成器
    AutoGenerator mpg = new AutoGenerator();

    // 规则的配置
    // 全局配置
    GlobalConfig gc = new GlobalConfig();
    String projectPath = System.getProperty("user.dir");// 获取当前项目的路径
    gc.setOutputDir(projectPath + "/项目模块名称/src/main/java");
    gc.setAuthor("guanzc");
    gc.setOpen(false);
    gc.setFileOverride(false); // 是否覆盖之前文件!
    gc.setServiceName("%sService");
    gc.setIdType(IdType.ID_WORKER_STR); // 主键策略
    gc.setDateType(DateType.ONLY_DATE); // 日期类型
    gc.setSwagger2(true); // 自动开启Swagger配置!
    mpg.setGlobalConfig(gc);


    // 数据源配置
    DataSourceConfig dsc = new DataSourceConfig();
    dsc.setUrl("jdbc:mysql://localhost:3306/test_"+moduleName+"?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai");
    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(moduleName);
    pc.setParent("com.guan");
    pc.setController("controller");
    pc.setService("service");
    pc.setEntity("entity");
    pc.setMapper("mapper");
    mpg.setPackageInfo(pc);

    // 策略配置
    StrategyConfig strategy = new StrategyConfig();
    // 要生成哪一个表对应的类
    strategy.setInclude(moduleName+"_\\w*"); // 自动生成以test 开头的表映射
    strategy.setNaming(NamingStrategy.underline_to_camel); // 数据库表生成到实体类的策略
    strategy.setTablePrefix(pc.getModuleName()+"_"); //实体排除表的 test_ 前缀

    strategy.setColumnNaming(NamingStrategy.underline_to_camel);
    strategy.setEntityLombokModel(true); // 自动生成lombok注解

     // 乐观锁
    strategy.setVersionFieldName("version");
    strategy.setRestControllerStyle(true); // restful api
    strategy.setControllerMappingHyphenStyle(true); // 使用_连接驼峰!

    mpg.setStrategy(strategy);

    // 2、执行代码生成器
    mpg.execute();
}

mybatis-plus

测试

@Autowired
  private UserServer userServer;

  @Test
  public void getUers() {
      List<User> list = userServer.list(null);
      System.out.print(list.size());
  }

userService:提供了很多API, 根据业务需求条用不同接口。
要针对单表查询,多表查询,需要写自定义接口,sql ,mybatis-plus 提了mapper.xml支持

上一篇:【浅谈】策略模式---strategy pattern(2)


下一篇:Mybatis Plus 代码自动生成器常用配置参考(详细解读)