常用的 API 位于 DbdToBeanApi 类,你可以这样获取该类:
DbdToBeanApi dbdToBeanApi = new DbdToBeanApi();
又或者这样获取该类:
DbdToBean dbdToBean = new DbdToBean();
DbdToBeanApi dbdToBeanApi = dbdToBean.getDbdToBeanApi();
如果使用 Spring Boot 的注入,也可以如下:
@Autowired
DbdToBean dbdToBean;
DbdToBeanApi dbdToBeanApi = dbdToBean.getDbdToBeanApi();
DbdToBeanApi 类里有五个方法:
dbdToBeanEntityApi()
:单个 Java Bean 实体类生成文档dbdToBeanEntityListApi()
:多个 Java Bean 实体类生成文档dbdToBeanMvcApi()
:Java Bean、Mapper、Service、Controller 生成文档dbdToBeanCustomerMvcApi()
:Java Bean、Mapper、Service、Controller 自定义生成文档applicationApi()
:application.yml 配置文件的文档
如果你想使用默认的配置,则使用 dbdToBeanMvcApi()
,或者 applicationApi()
,如果想自定义更多内容,使用 dbdToBeanCustomerMvcApi()
。
前四个方法返回的内容都是 Java 代码,您需要将这些代码放到 Spring Boot 的 test 测试目录下运行即可。
如果你不想在代码里使用多个 set 方法,可以使用第五个方法 applicationApi()
的代码,放入 application.yml 即可。
下面代码都放到 Spring Boot 的 test 测试目录下:
package cn.kbt;
import cn.kbt.dbdtobean.config.DbdToBeanDataSource;
import cn.kbt.dbdtobean.config.DbdToBeanProperties;
import cn.kbt.dbdtobean.core.DbdToBean;
import cn.kbt.dbdtobean.log.DbdToBeanApi;
import cn.kbt.dbdtobean.utils.BeanUtils;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Map;
@SpringBootTest
public class DbdtobeanTestApplicationTests {
@Autowired
DbdToBean dbdToBean;
@Test
public void api() {
DbdToBeanApi dbdToBeanApi = new DbdToBeanApi();
System.out.println(dbdToBeanApi.dbdToBeanCustomerMvcApi());
}
@Test
public void testMaven() throws IOException, SQLException {
String driverName = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/eightsm?useSSL-=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
String username = "root";
String password = "YoungKbt1234";
Connection connection = BeanUtils.getConnection(driverName, url, username, password);
DbdToBean dbdToBean = new DbdToBean();
dbdToBean.setConnection(connection);
dbdToBean.setAuthorName("Kele"); // 设置作者名
dbdToBean.setLowerCamelCase(true); // 开启驼峰命名
dbdToBean.setAllComments(true); // 打开注释
dbdToBean.setHeadComment(true); // 打开类注释
dbdToBean.setCommentType("//"); // 注释类型:// /* /**
dbdToBean.setBeanFirstNameIsUp(true); // 文件名首字母大写
dbdToBean.setControllerLocation("cn.kbt.controller"); // Controller 的全类名
dbdToBean.setServiceLocation("cn.kbt.service"); // Service 的全类名
dbdToBean.setMapperLocation("cn.kbt.mapper"); // Mapper 的全类名,与 Dao 二选一
dbdToBean.setEntityLocation("cn.kbt.bean"); // 实体类的包名,不填写,默认生成在桌面
dbdToBean.setGenerateCURD(true); // 生成增删改查的基础方法
// Map<String, String> map = dbdToBean.createBeanFromDataBase(); // 读取 url 里数据库的所有表
String map = dbdToBean.createBeanFromTable("product_info");
dbdToBean.exportToFiles(map); // 导出到文件
dbdToBean.closeConnection(); // 关闭数据库
}
@Test
public void dbdtobeanTest() throws SQLException, IOException {
Map<String, String> s = dbdToBean.createBeanFromDataBase();
dbdToBean.exportToFiles(s);
dbdToBean.closeConnection();
}
}
testMaven()
方法都是很多 setXXX 方法,而 dbdtobeanTest()
无需写这些 setXXX 方法,因为都放到了 application.yml 里
dbdtobean:
author-name: kele
mvc:
entity-location: cn.kbt.entity
controller-location: cn.kbt.controller
service-location: cn.kbt.service
mapper-location: cn.kbt.mapper
dao-location: cn.kbt.dao
swagger-location: cn.kbt.swagger
generate-request-body: true
generate-curd: true
open-swagger: true
comment:
all-comments: true
driver-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/eightsm?useSSL-=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: YoungKbt1234
base:
lower-camel-case: true
spring:
mvc:
path match:
matching-strategy: ant-path-matcher
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/eightsm?useSSL-=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: YoungKbt1234
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
值得注意的是:application.yml 里既有 DbdToBean 的数据库配置,也有 Spring Boot 的数据库配置。如果两者都写,那么以 Spring Boot 的数据库配置为主,所以您完全可以不写 DbdToBean 的数据库配置。
这也是考虑到兼容 Spring Boot。
如果你想在 yml 加更多内容,可以访问
dbdToBeanApi.dbdToBeanCustomerMvcApi()
里的 setXXX 配置,按照规范匹配的填写即可。
项目刚开始由 Chenyicai 创建,后面由 Kele_Bingtang 维护并更新。
时间:2021.06.28 20:18:52 - 2021.07.01 16:48:01
实现了数据库的表自动生成 JavaBean 文件的基本功能。
大功能:
- 单个表生成JavaBean 2. 一个数据库的所有表生成JavaBean
小功能:
- 添加了选择 生成构造器和 setter 和 getter 方法和重写 toString 方法
- 添加了选择 获取数据库的注释功能,如果没有,则生成规定的注释,也可以自定义注释
- 添加了选择 设置生成文件所在的包路径,即开头的
package xxxx;
- 添加了选择 导入 Java 自带的 jar 包,即非 java.lang 的 jar 包
- 添加了选择 类注释功能,如果没有,则生成规定的注释,也可以自定义注释
- 添加了选择 生成单个 JavaBean 文件的路径和文件夹名字,两个参数,路径不能有不存在的文件夹,默认路径在电脑桌面
- 添加了选择 生成一个数据库的 JavaBean 文件的路径和文件夹名字,默认路径在电脑桌面的一个文件夹里,该文件夹以该数据库名字 + 随机数字生成
- 添加了选择 Oracle 数据库生成的 JavaBean 文件中,属性值可以大小写,默认全大写,因为 Oracle 的字段全是大写
- 目前仅测试了 MySQL 和 Oracle
时间:2021.07.05 11:01:30 - 2021.07.05 13:13:52
- 添加了选择 去掉下划线并且把下划线后的首字母改为大写,即驼峰命名法
- 解决 Oracle 数据库生成单个表的 JavaBean 文件,无法设置属性字符串为小写
- 分离了各个功能,优化了结构,减少代码重复,提高一些性能和代码的维护性
- 解决 多个表生成 JavaBean 时,类注释只出现在第一个 JavaBean 里
- 解决 多个表生成 JavaBean 时,设置去掉下划线,文件名没有去掉下划线
时间:2021.08.09 13:31:27 - 2021.08.09 17:38:19
-
支持 Maven,提供与 Spring Boot 的 starter 启动类,无需手动导入 jar 包,只需导入依赖即可:dbdtobean-spring-boot-start
-
优化整体结构,降低耦合度,提供对外接口
-
去掉了数据库所有表生成时,自动生成文件功能,现在文件路径的接口都移到 exportToFile 中,需要手动调用该接口
-
生成 JavaBean 文件时,路径可以有不存在的文件夹,不存在则会在路径后创建文件夹
-
解决了 当字段为 x_xxx 时,生成 setter 和 getter,与 Java 定义的 setter 和 getter 不规范,如:
private String bUser
原版:生成 setter 和 getter 为
public void setBUser(String bUser){this.bUser = bUser;} public String getBUser(){return bUser;}
新版:方法名符合 Java 规范:
public void setbUser(String bUser){this.bUser = bUser;} public String getbUser(){return bUser;}
-
支持 Spring Boot 的自动装配,并且提供 properties 类,只需在 application 配置文件里以 dbdtobean 开头的数据库参数,即可自动生成数据库 Connection 对象
-
把类注解的 @CreateTime 替换为 @Create
-
支持类注释 @Author 的自定义,默认读取电脑的用户名
BUG(待解决)
MySQL 的 blob 类型无法转换成 Java 的 byte[] 类型
下版本可以解决的问题
- 后期:beanNameUpOrLow 作用是把首字母改为大小写,该名称应该改为 FirstBeanNameUpOrLow
- 拆分文件名和属性值,因为下划线的统一使用 set_ToUpper,应该一分为二,文件名下划线可改为 setBeanName_ToUpper,属性值为 setField_ToUpper
- setFieldNameIsLower 不合理,默认把字段名改为小写,应该把默认改为不改变字段名称,提高布尔值才确定改不改
时间:2021.09.19 16:14:32 - 2021.09.24 15:52:49
2021.09.19
- 添加 CustomComment 和 DefaultComment 类,将注释相关内容从核心类移出到这两个类,减少耦合度,提高代码优雅度
- 添加上下文 DBDToBeanContext 类,使用单例模式存储需要在核心类使用的其他类,全局管理者
- 将核心类的工具方法,移出到 DBDToBeanUtils 工具类里,对外提供 API,如首字母小写,获取随机数等
- 将beanNameUpOrLow 改为 beanFirstNameUp
2021.09.20
- 添加 DBDToBeanDefinition 类,将配置信息相关内容从核心类移出到这个类,减少耦合度,提高代码优雅度
- 优化核心类代码,减少不必要的判断等,使得代码更加简洁优雅
- 添加 HeadComment 头部注释类,自定义 Author 等信息
- 优化控制台输出提示信息
- 导出文件 API 添加返回值:导出文件所在的路径
2021.09.21:中秋节
- 添加两个接口,统一规范
- 简单实现了 指定 MVC 路径,即可生成以数据库表名为前缀的 MVC 的 Java 文件,MVC 指的是 Controller、Service、Dao、Mapper
- 不指定 MVC 路径,则不生产对应的 Java 文件
2021.09.21
- 添加 AbstractDBDToMVC 类,基于不同的 MVC 层生成不同的文件,所有 MVC 类继承此类
- 添加 DBDToMVCDefinition 类,存有 MVC 的前缀和后缀
- 添加自定义前缀和后缀,包括统一的 MVC 前缀和后缀,以及不同的 MVC(Controller、Service、Dao、Mapper)的前缀和后缀
- 提供默认的前缀和后缀,如实现类后缀为 Impl
纠结:目前生成不同的 MVC 文件需要不同的 MVC 的静态常量进行判断,但是 DBDToMVCDefinition 类有了与静态常量对应的变量,是否替换,去掉不必要的静态常量呢?
2021.09.23
- 提供自定义实现类的相比较父类接口的路径,默认为 Impl
- 将 DBDToBeanProperties 类移入 DBDToBeanContext 类,实现单例以及统一管理
- 生成的 MVC 文件提供 CRUD(增删改查) 共 5 个方法生成,默认不开启生成
- MVC 文件支持生成类注释,与实体类注释开启同步
后期(未实现):提供自定义接口,实现自定义 CRUD 方法,每个 MVC 文件统一生成这些方法
2021.09.24
- 支持 Maven 目录以及普通目录
- 普通目录下,Mapper 的 XML 文件与接口文件处于同一个目录
- 提供 API 使用说明,位于 LogInfo 类的方法里
2021.09.25
- 提供选择 生成 MVC 文件,类上方加上对他的 MVC 注解
- 优化 Spring Boot 的 starter,提供更多的配置信息,即直接在配置文件设置好参数,即可导入,如数据库驱动,url 等
- 添加 Spring Boot 配置文件输入 dbdbtobean 的参数,会有提示的功能
- 优化 dbdtobean 多个类加入 Spring 容器的顺序
时间:2022.02.06 13:14:25 - 2020.02.06 22:44:55
- 优化生成 MVC 文件时,import 的间距过长
- 生成 Controller 类时,自动调用 Service 对应的方法,以及 Service 调用 Dao 或 Mapper 对应的方法(两者都存在时,Mapper 优先级大于 Dao)
- Dao 层不再提供 @Mapper 注解,这作为原生 JDBC 使用
时间:2022.03.11 10:22:35 - 2022.03.12 0:31:55
- 解决生成 XML 文件时,方法不匹配 Mapper 接口
- 解决添加前缀和后缀后,导致类内容混乱的问题
时间:2022.08.02 - 2022.08.13
2022.08.02
- 在类和方法添加 @RequstMapping,参数 value,默认为方法名
- queryIssueById 和 deleteIssueById 的参数 Id 改为类对象
- 类的 @controller 注解改为 @RestController 注解
- 方法的参数添加 @requestbody
2022.08.03
- 修复无法将 DBDtoBeanConfiguration 注入到 Spring
- 删除了 ContextConfiguration 类,将内容移至 DbdToBeanConfiguration 类里
- Controller 加上通用注解,将参数 id 改成类对象
- Mybaties 的 XML 添加 SQL
- 目前这个版本无法获取表的主键,报空指针异常
2022.08.05
- Mybaties 的 XML 添加 SQL
- Mybaties 的 XML 添加常用标签
- 修改类名和一些方法名
2022.08.06
- 重构一些方法
- 将 \n 和 \t 进行封装,并全局使用
- 添加 MVC CURD 接口的注释
- 修改所有的类名和部分方法名,符合小驼峰命名法
2022.08.07
- 重构一些方法
- 添加 Swagger 的配置
- API 的完善
- 使用 Logger 进行日志输出
- 优化类注释的样式
2022.08.09
- 完善 API 的输出
- 添加 README.MD 文档
- 修复生成文件时的缓慢速度(解决反复递归问题)
2022.08.13
- 格式化项目的代码,添加 DbdToBean 的方法说明
- 发布 1.6 版本