golble mapper 可以将dsm生成demm_「熬夜整理」HouTu一款极简的根据MySQL生成Java类的开源库

HouTu

HouTu,一款基于MySQL的简单易用又功能强大的代码生成工具。取名后土,后土又名後土,源于母系社会自然崇拜中的土地与女性崇拜。其掌阴阳,育万物,因此被称为大地之母。本项目取名HouTu,取义“育万物”之意,通过定制Freemarker模板,可以生成任意结构化的代码,如 DO、Mapper、XML、Service、Controller、SQL、Html等等,只要你能写出模板,HouTu就能交付给你成品代码。

13db6afda67be27e4819d11f2e6c9e45.png

特点

  1. 原理简单:HouTu以原生MySQL语句为基础,获取如数据库列表、表详情和列详情等信息,结合Freemarker模板生成Java代码。
  2. 可定制模板:HouTu集成Freemarker模板,只要是遵循Freemarker开发的模板都可以自动生成对应的Java代码。
  3. 功能强大:支持单表生成、多表生成,理论上支持生成任意结构化的代码。

快速开始

声明入口类

Generator g = new Generator(Config.getInstance()        .setDriver("com.mysql.cj.jdbc.Driver")        .setUrl("jdbc:mysql://127.0.0.1:3306/houtu?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true&useLegacyDatetimeCode=false")        .setUsername("root")        .setPassword("root")        .setPrimaryKeyType("Integer")        .setClassPrefix("HouTu")        .setClearClassPrefix("HouTu")        .setOutRootDir(System.getProperty("user.dir") + File.separator + "generator-output"));

Generator.java只提供了一个构造函数,传入系统配置类Config.java

使用API

Generator.java对外提供了四个接口:

  • Generator#deleteOutRootDir(): 删除输出目录的文件,一般在generate之前调用,清空旧的输出文件
  • Generator#printAllTableInfo(): 打印所有表信息
  • Generator#generateAll(): 将所有表生成java文件
  • Generator#generate(String[]): 指定表名生成java文件,入参为可变参数,如果为空则调用Generator#generateAll()方法

具体使用

//删除生成器的输出目录g.deleteOutRootDir();// 打印所有表g.printAllTableInfo();// 生成单个表的Java文件g.generate("sys_user");

输出内容

00:53:57.945 [main] INFO me.zhyd.houtu.Generator - [delete dir]    D:projectjavaHouTugenerator-output00:53:57.955 [main] INFO me.zhyd.houtu.Generator - ----All Table Names Begin----00:53:57.990 [main] INFO me.zhyd.houtu.Generator -   InnoDB - "sys_resources" - utf8_general_ci00:53:57.992 [main] INFO me.zhyd.houtu.Generator -   InnoDB - "sys_role" - utf8_general_ci00:53:57.992 [main] INFO me.zhyd.houtu.Generator -   InnoDB - "sys_role_resources" - utf8_general_ci00:53:57.992 [main] INFO me.zhyd.houtu.Generator -   InnoDB - "sys_user" - utf8_general_ci00:53:57.992 [main] INFO me.zhyd.houtu.Generator -   InnoDB - "sys_user_role" - utf8_general_ci00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ----All Table Names END----00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------00:53:57.992 [main] INFO me.zhyd.houtu.Generator - - BEGIN generate by sys_user00:53:57.992 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------00:53:58.077 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------00:53:58.078 [main] INFO me.zhyd.houtu.Generator - - BEGIN generate by sys_user00:53:58.078 [main] INFO me.zhyd.houtu.Generator - ---------------------------------------------------------------00:53:58.471 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputbizdtoHouTuSysUserDto.java00:53:58.476 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputbizformHouTuSysUserForm.java00:53:58.478 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputbizserviceHouTuSysUserService.java00:53:58.479 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputbizserviceimplHouTuSysUserServiceImpl.java00:53:58.481 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputbizvoHouTuSysUserVO.java00:53:58.482 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputcontrollerenderRenderHouTuSysUserController.java00:53:58.485 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputcontrollerRestHouTuSysUserController.java00:53:58.487 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputpersistencebeansHouTuSysUser.java00:53:58.490 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputpersistencemapperHouTuSysUserMapper.java00:53:58.491 [main] INFO me.zhyd.houtu.Generator - D:projectjavaHouTugenerator-outputpersistencexmlHouTuSysUserMapper.xml00:53:58.493 [main] INFO me.zhyd.houtu.core.GeneratorHelper - 程序执行完毕,释放资源...
0ebf43a42d3be74152855c15fd657774.png

内置模板

轻量级的代码生成工具。根据模板进行生成,理论上支持任意模板代码的生成。

|-- biz|   |-- dto|   |   `-- ${table.className}Dto.java|   |-- service|   |   |-- ${table.className}Service.java|   |   `-- impl|   |       `-- ${table.className}ServiceImpl.java|   `-- vo|       `-- ${table.className}ConditionVO.java|-- controller|   |-- Rest${table.className}Controller.java|   `-- render|       `-- Render${table.className}Controller.java|-- persistence|   |-- beans|   |   `-- ${table.className}.java|   |-- mapper|   |   `-- ${table.className}Mapper.java|   `-- xml|       `-- ${table.className}Mapper.xml|-- sql|-- view|    `-- ${table.className}|-- annotation.include|-- java_copyright.include`-- macro.include

定制模板

模板配置项

| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| classPrefix | String | Light | 生成的类前缀,先去除 clearClassPrefix 再添加 classPrefix | || clearClassPrefix | String | Light | 需要去除的类前缀,先去除 clearClassPrefix 再添加 classPrefix | || driver | String | com.mysql.cj.jdbc.Driver | | || url | String | jdbc:mysql://127.0.0.1:3306/light | | || db | String | light | 选择的数据库,非必填,如果为空会从url中解析 | || username | String | root | 数据库用户名 | || password | String | root | 数据库密码 | || basePackage | String | me.zhyd.xx.core | 根包名 | || beansPackage | String | me.zhyd.light.core.db.persistence.beans | beans包名 | || mapperPackage | String | me.zhyd.xx.core.db.persistence.mapper | mapper接口包名 | || outRootDir | String | D:projectgeneratorgenerator-output | 文件输出路径 | || templatePath | String | template/ | 模板路径,基于当前项目路径 | || table | JSONObject | object | 表信息 | |

table 配置项

| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| type | String | BASE TABLE | 数据表类型 | || db | String | light | 数据库名 | || tableName | String | links | 数据表名 | || coding | String | utf8mb4_general_ci | 数据表编码 | || createTime | String | 2020-04-26 13:25:37 | 数据表创建时间 | || engine | String | InnoDB | 数据表引擎 | || remark | String | | 数据表注释 | || className | String | LightLinks | 待生成的类名 | || classNameFirstLower | String | lightLinks | 首字母小写的类名 | || classNameFirstUpper | String | LightLinks | 首字母大写的类名 | || columns | JSONArray | array | 列信息 | |

table.columns 配置项

| 配置项 | 类型 | 示例 | 解释 | 备注 ||:---------------------------|:---------|:---------|:---------||:---------|| tableName | String | links | 表名 | || keyType | String | PRI | 键类型(PRI 主键) | || columnName | String | id | 列名 | || columnNameFirstLower | String | id | 列名首字母小写 | || columnNameFirstUpper | String | Id | 列名首字母大写 | || notNull | Boolean | true | 是否允许为空 | || length | Integer | 0 | 长度 | || scale | Integer | 0 | 精度,当为浮点数字类型时可用 | || remark | String | | 列注释 | || columnType | String | bigint | 列对应的数据库数据类型 | || jdbcType | String | BIGINT | 列对应的JDBC数据类型 | || javaType | String | java.lang.String | 列对应的Java数据类型 | || possibleShortJavaType | String | String | | || extra | String | auto_increment | 额外参数,auto_increment表自增 | |

待完成的功能

  • 支持引用环境变量: ${env.JAVA_HOME} or System.properties: ${user.home}
  • 自定义模板配置路径(当前是基于项目根目录的)

学习Java的伙伴,回复:Java,获取Java视频学习教程!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用MyBatis Plus来实现根据Java实体自动生成数据表和Mapper等代码。以下是一个简单的示例: 1. 首先需要在Maven或Gradle的配置文件中添加MyBatis Plus依赖: Maven: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.4.3.1</version> </dependency> ``` Gradle: ```groovy dependencies { implementation 'com.baomidou:mybatis-plus:3.4.3.1' } ``` 2. 创建一个Java实体,例如: ```java public class User { private Long id; private String name; private Integer age; // getter and setter } ``` 3. 创建一个Mapper接口,例如: ```java public interface UserMapper extends BaseMapper<User> { } ``` 这里使用了MyBatis Plus提供的BaseMapper接口,它已经提供了一些常用的CRUD操作方法,不需要手动编写SQL语句。 4. 在配置文件中配置数据源和MyBatis Plus相关参数,例如: ```properties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root # MyBatis Plus mybatis-plus.mapper-locations=classpath:mapper/*.xml mybatis-plus.type-aliases-package=com.example.entity mybatis-plus.global-config.db-config.id-type=auto ``` 这里使用了Spring Boot的配置方式,数据源的相关参数需要根据实际情况进修改mapper-locations属性指定Mapper文件所在位置,type-aliases-package属性指定实体所在包名,global-config.db-config.id-type属性指定主键生成策略。 5. 启动应用程序,MyBatis Plus会自动根据实体User生成对应的数据表和Mapper接口实现。 ```java @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ``` 6. 在代码中使用Mapper接口进数据操作,例如: ```java @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public List<User> getUsers() { return userMapper.selectList(null); } @PostMapping("/users") public User addUser(@RequestBody User user) { userMapper.insert(user); return user; } } ``` 这里使用了Spring MVC的注解来定义RESTful API,使用了@Autowired注解将UserMapper自动注入到控制器中,使用了selectList和insert方法进数据操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值