Spring Boot —— 集成 MyBatis-Plus

打印 上一主题 下一主题

主题 871|帖子 871|积分 2623

项目基于 Spring Boot 3.2.5
Pom

需要注意的是,引用 Mybatis-Plus 依赖,无需手动引入 Mybatis
  1. <dependency>
  2.     <groupId>com.mysql</groupId>
  3.     <artifactId>mysql-connector-j</artifactId>
  4.     <version>8.4.0</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>com.baomidou</groupId>
  8.     <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
  9.     <version>3.5.6</version>
  10. </dependency>
  11. <dependency>
  12.     <groupId>com.baomidou</groupId>
  13.     <artifactId>mybatis-plus-generator</artifactId>
  14.     <version>3.5.6</version>
  15. </dependency>
  16. <dependency>
  17.     <groupId>org.apache.velocity</groupId>
  18.     <artifactId>velocity-engine-core</artifactId>
  19.     <version>2.3</version>
  20. </dependency>
复制代码
application.yml
  1. spring:
  2.   profiles:
  3.     active: develop
复制代码
application-develop.yml
  1. mybatis-plus:
  2.   # mybatis xml 文件的保存路径,classpath 表示 java 或 resources 目录,因此当前设置表示 resources/mapper/任意子目录/*Mapper.xml 文件都会被扫描
  3.   mapper-locations: classpath:mapper/**/*Mapper.xml
  4.   # 表示实体对象所在的命名空间
  5.   type-aliases-package: com.cash216.mango.*.entity
  6.   # mybatis-plus 配置文件,可选
  7.   # config-location: classpath: config/MyBatisConfig.xml
  8.   configuration:
  9.     # 日志输出方式
  10.     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  11.   global-config:
  12.     db-config:
  13.       # 逻辑删除配置
  14.       logic-delete-value: 1
  15.       logic-not-delete-value: 0
  16.       logic-delete-field: del_flag
复制代码
自动生成Service、Model(Entity)、Mapper

引入mybatis-plus-generator可用于基于数据库自动生成各层文件,基本步调如下:

  • 引入依赖
  • 配置数据连接
  • 编写自动生成运行代码
  • 美满自动生成文件业务逻辑
引入依赖

在 pom 节已列举,不再重复
配置数据连接

以application-develop.yml为例
  1. spring:
  2.   datasource:
  3.     driver-class-name: com.mysql.cj.jdbc.driver
  4.         url: jdcb:mysql://127.0.0.1:3306/{database}?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true
  5.         username: root
  6.         password: 123456
复制代码
实际这一步不影响自动生成,因为在编写自动生成运行代码时还需要设置
编写自动生成文件的运行代码

新建java文件如CodeGenerator.java,编写代码如下:
  1. package com.cash216.mangoAdmin.codegenerator;
  2. import com.baomidou.mybatisplus.annotation.FieldFill;
  3. import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
  4. import com.baomidou.mybatisplus.generator.FastAutoGenerator;
  5. import com.baomidou.mybatisplus.generator.fill.Column;
  6. import java.util.Arrays;
  7. import java.util.Collections;
  8. import java.util.List;
  9. import java.util.Scanner;
  10. public class CodeGenerator {
  11.     private static final String databaseUrl = "jdbc:mysql://127.0.0.1:3306/{database}?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true";
  12.     private static final String databaseUser = "root";
  13.     private static final String databasePassword = "123456";
  14.     public static String scanner(String tip){
  15.         Scanner scanner = new Scanner(System.in);
  16.         StringBuilder help = new StringBuilder();
  17.         help.append("请输入").append(tip).append(":");
  18.         System.out.println(help.toString());
  19.         if (scanner.hasNext()) {
  20.             String ipt = scanner.next();
  21.             if (ipt != null && !ipt.isEmpty()) {
  22.                 return ipt;
  23.             }
  24.         }
  25.         throw new MybatisPlusException(STR."请输入正确的\{tip}");
  26.     }
  27.     public static void main(String[] args){
  28.                 // 本例使用 Mybatis-plus 交互式生成方式,会询问作者、包名、表名后自动生成各层目录及文件
  29.         FastAutoGenerator.create(databaseUrl, databaseUser, databasePassword)
  30.                 .globalConfig((scanner, builder)->
  31.                         builder.author(scanner.apply("请输入作者名称"))
  32.                                 .commentDate("yyyy-MM-dd")
  33.                                 .outputDir(System.getProperty("user.dir") + "/src/main/java"))
  34.                 .packageConfig((scanner, builder)-> builder.parent(scanner.apply("请输入包名")))
  35.                 .strategyConfig((scanner, builder)-> builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔,所有输入 all")))
  36.                         .entityBuilder()
  37.                         .enableLombok()
  38.                         .addTableFills(new Column("create_time", FieldFill.INSERT))
  39.                         .build())
  40.                 .execute();
  41.     }
  42.     protected static List<String> getTables(String tables){
  43.         return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
  44.     }
  45. }
复制代码
运行main方法,在控制台会以交互方式询问作者、包名、表名后生成文件,生成后的结果如图



原来*Mapper.xml文件是生成在mapper/xml目次下的,在本例中是后移动到resources/mapper/system中
使用

不知道是原来就如许还是我使用有问题,生成的所有文件,除了实体对象外,其他文件里边都是空的
Mybatis-plus 自带一些通用接口方法,可直接调用,比如根据Id查询记录
  1. public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
  2.         @Override
  3.         public SysUser findById(Long id){
  4.                 return baseMapper.selectById(id);
  5.         }
  6. }
复制代码
Mybatis-plus 没有的方法需自行添加实现,需要添加Mapper.xml、Mapper接口文件、IService、ServiceImpl、Controller,在这里只列出ServiceImpl中的代码为例
  1. public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
  2.         @Override
  3.         public SysUser findById(Long id){
  4.                 return baseMapper.selectById(id);
  5.         }
  6.        
  7.         @Override
  8.         public SysUser findByName(String name){
  9.                 return baseMapper.selectOne(new QueryWrapper<SysUser>().eq("name", name));
  10.         }
  11. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表