纯手打,转载请附上本文网址!!!
实习,框架用的SpringBoot + Jooq,什么Jooq是什么?其实我也不知道,后来看了一下官网的文档和网上的资料,发现这个Jooq确实挺有意思的,尤其是在程序的语句这块,可以参考我的另一篇博客:http://blog.csdn.net/xianzhixianzhixian/article/details/78894256
但是我要的功能是根据数据库的内容生成pojo的代码呀,这可把我难坏了,但是功夫不负有心人还是做出来了;废话不多直接上教程,附上github源码示例地址:https://github.com/xianzhixianzhixian/jooq-maven.git
至于不会用git命令的看这篇http://blog.csdn.net/xianzhixianzhixian/article/details/78789867
工程结构如图,com.yufeng.strategy是自定义生成的策略的地方,me.ele.atfcapi.tools.db是生成pojo代码的地方:
首先我们需要配置pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yufeng</groupId>
<artifactId>jooq-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mysql-jdbc-driver>5.1.34</mysql-jdbc-driver>
<!--<mysql-jdbc-driver>5.1.39</mysql-jdbc-driver>-->
<vapor-version>1.0.5-SNAPSHOT</vapor-version>
<!--<jooq-version>3.10.0</jooq-version>-->
<jooq-version>3.7.0</jooq-version>
<javax-validation-version>1.1.0.Final</javax-validation-version>
<spring-boot-version>1.5.6.RELEASE</spring-boot-version>
</properties>
<!--依赖包声明 实际没有导入-->
<!--<dependencyManagement>-->
<dependencies>
<!--Spring Boot start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jooq</artifactId>
<version>${spring-boot-version}</version>
</dependency>
<!--Spring Boot end-->
<!--JOOQ start-->
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq</artifactId>
<version>${jooq-version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-meta</artifactId>
<version>${jooq-version}</version>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen</artifactId>
<version>${jooq-version}</version>
</dependency>
<!--JOOQ end-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-jdbc-driver}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${javax-validation-version}</version>
</dependency>
</dependencies>
<!--</dependencyManagement>-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq-version}</version>
<executions>
<execution>
<id>generate-mysql</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- jdbc配置 -->
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<!-- 这里写你自己数据库的连接和数据库名 -->
<url>jdbc:mysql://127.0.0.1:3306/数据库名</url>
<!-- 这里写你自己数据库的用户名 -->
<user>root</user>
<!-- 这里写你自己数据库的密码 -->
<password>******</password>
</jdbc>
<!-- 代码生成配置 -->
<generator>
<name>org.jooq.util.JavaGenerator</name>
<strategy>
<name>com.yufeng.strategy.MyStrategy</name>
</strategy>
<database>
<name>org.jooq.util.mysql.MySQLDatabase</name>
<excludes>QRTZ_.*|jooq-maven\..*\.is_delete</excludes>
<includeExcludeColumns>true</includeExcludeColumns>
<inputSchema>atfcapi</inputSchema>
</database>
<generate>
<deprecated>false</deprecated>
<daos>true</daos>
<interfaces>true</interfaces>
<validationAnnotations>true</validationAnnotations>
</generate>
<target>
<packageName>me.ele.atfcapi.tools.db</packageName>
<directory>src/main/java</directory>
</target>
</generator>
</configuration>
</plugin>
</plugins>
</build>
</project>
之后再写一个配置文件MyStrategy.java用来指定生成pojo代码的规则:
@Configuration
public class MyStrategy extends DefaultGeneratorStrategy {
private String tablePrefix = "tb_";
public String getTablePrefix() {
return tablePrefix;
}
public void setTablePrefix(String tablePrefix) {
this.tablePrefix = tablePrefix;
}
@Override
public String getJavaClassName(Definition definition, Mode mode) {
StringBuilder result = new StringBuilder();
String outputName = definition.getOutputName();
if (!StringUtils.isBlank(tablePrefix) && outputName.startsWith(tablePrefix)) {
outputName = outputName.substring(tablePrefix.length());
}
result.append(StringUtils.toCamelCase(outputName));
if (mode == Mode.RECORD) {
result.append("Record");
} else if (mode == Mode.DAO) {
result.append("Dao");
} else if (mode == Mode.INTERFACE) {
result.insert(0, "I");
}
return result.toString();
}
}
1、rebuild project,为.java文件生成相应的.class文件
2、在命令行里输入mvn install
代码生成完毕咯~