mybatis-plus代码生成器

mybatisplus 代码生成器分为两个版本,mybatis-plus-generator 3.5.1 以下版本和mybatis-plus-generator 3.5.1 以上版本

mybatis-plus-generator 3.5.1 以下版本使用

添加依赖:

<!-- mybatisPlus 代码生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>

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

编写自动代码生成类

public class MysqlGenerator {
    /**
     * 代码生成,示例代码
     *
     */
    public static void main(String[] args) {
        // 全局配置
        GlobalConfig config = new GlobalConfig();
        config.setActiveRecord(true);//是否支持AR模式
        config.setAuthor("lfh");//作者
        config.setOutputDir(System.getProperty("user.dir") + "\\src\\main\\java");//生成路径
        config.setFileOverride(true);//文件覆盖
        config.setIdType(IdType.AUTO);//自增策略
        config.setServiceName("%sService");//设置生成的service接口的名字首字母是否有I
        config.setBaseResultMap(true);
        config.setBaseColumnList(true);
        //2.数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL);//设置数据库类型
        dsc.setUrl("jdbc:mysql://localhost:3306/springboot-test-db?useUnicode=true&useSSL=false&characterEncoding=utf8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        //3.策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setCapitalMode(true);//开启全局大写命名
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
        strategyConfig.setTablePrefix("tbl_");//表的前缀
        strategyConfig.setInclude("tbl_user");//需要生成的表
        //4.包名策略配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.example.springboot")
                .setMapper("mapper")
                .setService("service")
                .setController("controller")
                .setEntity("bean")
                .setXml("mapper");
        //5.整合配置
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(config)
                .setDataSource(dsc)
                .setStrategy(strategyConfig)
                .setPackageInfo(pc);
        //6.执行
        autoGenerator.execute();
    }
}

mybatis-plus-generator 3.5.1 以上版本

添加依赖:

 <dependency>
   <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>3.5.1</version>
 </dependency>
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-generator</artifactId>
     <version>3.5.2</version>
 </dependency>
 <dependency>
     <groupId>org.apache.velocity</groupId>
     <artifactId>velocity-engine-core</artifactId>
     <version>2.3</version>
 </dependency>

编写自动代码生成类

public class MybatisPlusGenerator {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/springboot-test-db?useUnicode=true&useSSL=false&characterEncoding=utf8";
        String username = "root";
        String password = "root";


        //表名集合
        List<String> tables = new ArrayList<>();
        tables.add("tbl_user");

        FastAutoGenerator.create(url, username, password)
                //全局配置
                .globalConfig(builder -> {
                    builder.fileOverride()   //	开启覆盖之前生成的文件
                            .disableOpenDir()  //禁止打开输出目录
                            .outputDir(System.getProperty("user.dir") + "\\src\\main\\java")   //指定输出目录
                            .author("lfh")   //作者名
//                            .enableKotlin()      //开启 kotlin 模式
//                            .enableSwagger()     //开启 swagger 模式
                            .dateType(DateType.TIME_PACK)   //时间策略
                            .commentDate("yyyy-MM-dd");   //注释日期
                })
                //包配置
                .packageConfig(builder -> {
                    builder.parent("com.example.demo")     //父包名
                            .entity("bean")                 //Entity 包名
                            .service("service")             //	Service 包名
                            .serviceImpl("service.impl")    //Service Impl 包名
                            .mapper("mapper")               //Mapper 包名
                            .xml("mapper.xml")              //	Mapper XML 包名
                            .controller("controller")       //Controller 包名
                            .other("config")                //自定义文件包名	输出自定义文件时所用到的包名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));//指定xml位置
                })
                //策略配置
                .strategyConfig(builder -> {
                    builder.addInclude(tables)
                            .addTablePrefix("tbl_")//表名前缀,配置后生成的代码不会有此前缀
                            .serviceBuilder()
                            .formatServiceFileName("%sService")//服务层接口名后缀
                            .formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
                            .entityBuilder()
                            .enableLombok()//实体类使用lombok,需要自己引入依赖
                            //.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
                            .enableTableFieldAnnotation()//加上字段注解@TableField
                            .controllerBuilder()
                            .formatFileName("%sController")//控制类名称后缀
                            .enableRestStyle()
                            .mapperBuilder()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper");
                })
                .execute();


    }
}

详细配置可以参考官网

下面是springboot整合MybatisPlus的步骤:

使用idea工具创建springboot项目,然后添加pom.xml文件依赖,配置application.yaml文件如下:
pom.xml文件依赖:(注意这里我只是把主要的依赖展示,数据库连接依赖,上面有MybatisPlus的依赖,这些基本的依赖,需要其他的自己导入)

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

application.yaml配置:

server:
  port: 8080

#数据库连接配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot-test-db?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
    username: root
    password: root

# MybatisPlus的配置
mybatis-plus:
  #MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。
  mapper-locations: classpath*:mapper/*.xml
  #单独的 MyBatis 配置,请将其路径配置到 configLocation 中  注意 configuration与config-location不能一起用
#  错误原因已经提示的很清楚了 configuration 和 configLocation 不能同时存在 也就是说:在spring的配置文件指定了mybatis的配置文件 就不能在spring的配置里面写入mybatis的配置,所以报错。
#  config-location: classpath*:mybatis-config.xml
  # 实体对象的扫描包,MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名
#  type-aliases-package: com.song.druid.test.domain
  configuration:
    #开启映射时驼峰命名
    map-underscore-to-camel-case: true
    #开启控制台 SQL 日志打印
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#    auto-mapping-behavior: full
  global-config:
    db-config:
      logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)


#查看SQL日志
logging:
  level:
    com:
      example:
        demo:
          mapper: debug

在主启动类上配置:@MapperScan()这个注解
添加MapperScan注解。指定mapper扫描路径。指定后就不要在mapper层写@Mapper注解了

@MapperScan("com.example.demo.mapper")
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

springboot整合MybatisPlus一个小项目

springboot整合MybatisPlus一个小项目:传送门
https://gitee.com/liu_fuhao/springboot_mybatisplus.git

springboot整合MybatisPlus使用oracle数据连接

编写自动代码生成类

public class MybatisPlusGenerator {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@10.98.189.174:1521:orcl";
        String username = "test";
        String password = "1111111111";


        //表名集合
        List<String> tables = new ArrayList<>();
        tables.add("CUX_KS_COMPANY_REVENUE");
        tables.add("CUX_KS_ROLE");
        tables.add("CUX_KS_USER_ROLE_INCOMETYPE_COMPANY");

        //添加要忽略表中的字段
        String[] strings = new String[]{
                "REQUEST_ID",
                "PROGRAM_UPDATE_DATE",
                "PROGRAM_APPLICATION_ID",
                "OBJECT_VERSION_NUMBER",
                "PROGRAM_ID",
                "CREATED_BY",
                "CREATION_DATE",
                "LAST_UPDATED_BY",
                "LAST_UPDATE_DATE",
                "LAST_UPDATE_LOGIN",
                "ATTRIBUTE_CATEGORY",
                "ATTRIBUTE1",
                "ATTRIBUTE2",
                "ATTRIBUTE3",
                "ATTRIBUTE4",
                "ATTRIBUTE5",
                "ATTRIBUTE6",
                "ATTRIBUTE7",
                "ATTRIBUTE8",
                "ATTRIBUTE9",
                "ATTRIBUTE10",
                "ATTRIBUTE11",
                "ATTRIBUTE12",
                "ATTRIBUTE13",
                "ATTRIBUTE14",
                "ATTRIBUTE15"
        };



        DataSourceConfig.Builder builder1 = new DataSourceConfig.Builder(url, username, password);
        //创建数据库中类型到Java实体类中的数据类型的对应关系
        builder1.typeConvert(new ITypeConvert() {
                                 @Override
                                 public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
                                     String t = fieldType.toLowerCase();
                                     //这里是把数据库中datetime的类型变成Java的data类型的数据
                                     if(t.contains("datetime")){
                                         return DbColumnType.DATE;
                                     }
                                     //这里是把数据库中number的类型变成Java的long类型的数据
                                     if(t.contains("number")){
                                         return DbColumnType.LONG;
                                     }
                                     //其它字段采用默认转换(非mysql数据库可以使用其它默认的数据库转换器)
                                     return new MySqlTypeConvert().processTypeConvert(globalConfig,fieldType);
                                 }
                             }
        );

        FastAutoGenerator.create(builder1)
                //全局配置
                .globalConfig(builder -> {
                    builder.fileOverride()   //	开启覆盖之前生成的文件
                            .disableOpenDir()  //禁止打开输出目录
                            .outputDir(System.getProperty("user.dir") + "\\src\\main\\java")   //指定输出目录
                            .author("lfh")   //作者名
//                            .enableKotlin()      //开启 kotlin 模式
//                            .enableSwagger()     //开启 swagger 模式
                            .dateType(DateType.TIME_PACK)   //时间策略
                            .commentDate("yyyy-MM-dd");   //注释日期
                })
                //包配置
                .packageConfig(builder -> {
                    builder.parent("com.example.springboot2test")     //父包名
                            .entity("bean")                 //Entity 包名
                            .service("service")             //	Service 包名
                            .serviceImpl("service.impl")    //Service Impl 包名
                            .mapper("mapper")               //Mapper 包名
                            .xml("mapper.xml")              //	Mapper XML 包名
                            .controller("controller")       //Controller 包名
                            .other("config")                //自定义文件包名	输出自定义文件时所用到的包名
                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "\\src\\main\\resources\\mapper"));//指定xml位置
                })
                //策略配置
                .strategyConfig(builder -> {
                    builder.addInclude(tables)
                            .addTablePrefix("CUX_KS_")//表名前缀,配置后生成的代码不会有此前缀
                            .serviceBuilder()
                            .formatServiceFileName("%sService")//服务层接口名后缀
                            .formatServiceImplFileName("%sServiceImpl")//服务层实现类名后缀
                            .entityBuilder()
                            .enableLombok()//实体类使用lombok,需要自己引入依赖
                            //.logicDeleteColumnName("status")//逻辑删除字段,使用delete方法删除数据时会将status设置为1。调用update方法时并不会将该字段放入修改字段中,而是在条件字段中
                            .enableTableFieldAnnotation()//加上字段注解@TableField
                            .controllerBuilder()
                            .formatFileName("%sController")//控制类名称后缀
                            .enableRestStyle()
                            .mapperBuilder()
                            .superClass(BaseMapper.class)
                            .formatMapperFileName("%sMapper")
                            .enableMapperAnnotation()
                            .formatXmlFileName("%sMapper")
                            .entityBuilder()
                            .addIgnoreColumns(strings);//添加要忽略的数据库中列
                })
                .execute();



    }
}

需要导入的pom文件有:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
<!-- http://mvnrepository.com/artifact/com.oracle/ojdbc14 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1.0</version>
</dependency>

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

连接条件

server.port=8888
spring.datasource.url=jdbc:oracle:thin:@ip地址:1521:服务名
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=用户名
spring.datasource.password=密码
#查看SQL日志
logging.level.com.example.springboot2test.mapper=debug
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值