在idea中开发spring boot项目,用到的数据库是达梦数据库,想要使用 MybatisPlus 自动生成实体类和服务,并且通过 MybatisPlus 完成一些简单的数据库CRUD
ps:这里的 MybatisPlus 版本必须要是3.0以上
dm.jdbc DmJdbcDriver18 1.8 system ${project.basedir}/lib/DmJdbcDriver18.jar com.baomidou mybatis-plus-boot-starter 3.5.2 com.baomidou mybatis-plus-generator 3.5.2
ps:其中需要将达梦数据库的依赖添加到指定目录下,不然达梦的依赖无法生效。至于该 jar包 的位置在达梦数据库安装的文件目录中可以找到
位置参考:
package com.xxxx; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; import com.baomidou.mybatisplus.generator.fill.Column; import org.junit.jupiter.api.Test; /** * @className: MybatisPlusGeneraotr * @description: mybatis plus代码生成器 **/ public class MybatisPlusGeneraotr { @Test void mybatisPlusGenerator() { FastAutoGenerator // 数据源配置 .create( "jdbc:dm://localhost:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8", "SYSDBA", // 达梦数据库模式名 "xyz123..." // 密码 ) // 全局配置 .globalConfig( builder -> { builder .author("xxx") // 作者 .outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定输出目录 .commentDate("yyyy-MM-dd") // 注释的日期 // 修改Date类型为LocalDateTime //.dateType(DateType.ONLY_DATE) .enableSwagger() .disableOpenDir(); // 禁止打开输出目录,默认:true } ) // 包配置 .packageConfig( builder -> { builder //.moduleName(System.getProperty("user.dir").substring(System.getProperty("user.dir").lastIndexOf("\\") + 1)) // 设置父包模块名 .parent(this.getClass().getPackageName() + ".base") // 父包名 .entity("pojo.entity") // 实体类包名 //.pathInfo(Collections.singletonMap(OutputFile.mapperXml, System.getProperty("user.dir") + "/src/main/resources/mapper")) // 设置 mapperXml 生成路径 .other("utils"); // 自定义文件包名 } ) // 策略配置 .strategyConfig( builder -> { builder // 在这里添加数据库表名 .addInclude("BBZQ_ROLE") // 设置需要生成的表名,多个表之间可以用逗号隔开 // .addExclude("BBZQ_USER","BBZQ_USER_LOG") .controllerBuilder().enableRestStyle() // controller配置策略 .serviceBuilder().formatServiceFileName("%sService") // service配置策略 .mapperBuilder().enableBaseColumnList().enableBaseResultMap().enableMapperAnnotation() // mapper配置策略 .entityBuilder().enableLombok().enableRemoveIsPrefix().disableSerialVersionUID().enableTableFieldAnnotation() // 实体配置策略 .logicDeleteColumnName("is_deleted") // 逻辑删除字段名 .naming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略,下划线转驼峰 .columnNaming(NamingStrategy.underline_to_camel) // 数据库表字段映射的命名策略,下划线转驼峰 .addTableFills( // 添加表字段填充,"create_time"自动填充为插入时间,"update_time"自动填充为修改时间 new Column("create_time", FieldFill.INSERT), new Column("update_time", FieldFill.INSERT_UPDATE) ) .idType(IdType.AUTO); } ) // 模板配置 .templateEngine(new VelocityTemplateEngine()) // 使用的是默认的 Velocity 引擎模板 // 执行 .execute(); } }
server: port: 7069 spring: config: activate: on-profile: xx # 达梦数据库连接配置 datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: dm.jdbc.driver.DmDriver # url: jdbc:dm://127.0.0.1:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 url: jdbc:dm://localhost:5236/SYSDBA?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 username: SYSDBA password: xyz123...
这里想要实现,需要保证达梦数据库的表名和字段名全部都是大写,因为如果是小写的话,在查询的时候需要加上双引号,而 MybatisPlus 生成 sql 的过程中是不会自动添加双引号的,这样就会出问题,如下
这里的效果图是我执行了多个表之后的结果
测试前数据库数据:
执行测试工具类:
package com.xx; import com.xx.base.mapper.BbzqRoleMapper; import com.xx.base.pojo.entity.BbzqRole; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; @SpringBootTest(classes = ApiApplication.class) public class dmTest { @Autowired private BbzqRoleMapper bbzqRoleMapper; @Test public void teacher() throws ParseException { Listteachers = bbzqRoleMapper.selectList(null); teachers.forEach(System.out::println); System.out.println("=================================="); BbzqRole bbzqRole = new BbzqRole(); bbzqRole.setId("566666666"); bbzqRole.setRoleName("zhouzhou"); bbzqRole.setRoleCode("8858"); String createTime = "2022-02-02 02:02:02"; String updateTime = "2023-03-03 03:03:03"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); bbzqRole.setCreateTime(formatter.parse(createTime)); bbzqRole.setUpdateTime(formatter.parse(updateTime)); bbzqRoleMapper.insert(bbzqRole); teachers = bbzqRoleMapper.selectList(null); teachers.forEach(System.out::println); } }
测试后数据库数据:
至此,成功!
再次在提一次: 达梦数据库中的表和字段都必须大写 , 不过好像听说在创建或迁移数据的工程中设置达梦数据库不区分大小写也可以,不过没有尝试过