我们创建完成数据库后,使用orm框架要把数据库中的表、字段与实体,属性对映起来。总归不能把字段重新录入到实体类中吧,这样太麻烦了。我们用powerdesigner创建模型生成到数据库中,不用在数据库中一步一步的创建表。当然工作量并没有少多少,都需要创建一个表结构。但是,一步到位啊。我们本着减少工作量的目的去完成任务powerdesigner→数据库(mysql,oracle,sqlServer)→orm映射。闲话少说。下边记录使用generator的反向生成。
使用mybatis的步骤:
- 添加mybatis的依赖于插件。(在生成实体的时候,我不知道是否必须添加mybatis的依赖,但是使用mybatis肯定需要添加依赖的)。
//依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> //插件 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin>
-
添加generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <properties resource="generator.properties"></properties> <!-- 当前电脑的数据库驱动程序jar包的绝对路径 --> <classPathEntry location="${jdbc.driverLocation}"/> <context id="context" targetRuntime="MyBatis3"> <!--是否在代码中显示注释--> <commentGenerator> <property name="suppressDate" value="true" /><!-- 取消生成注释代时间戳 --> <property name="suppressAllComments" value="true" /><!-- 取消所有注释 --> </commentGenerator> <!--数据库链接地址账号密码--> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.connectionURL}" userId="${jdbc.username}" password="${jdbc.password}"> </jdbcConnection> <!--...--> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--生成pojo类存放位置 targetPackage:生成的实体类的位置在哪个包下 targetProject:生成的目标项目位置。填写src\main\java。在部分人的示例中,targetProject是绝对路径,更换电脑的话就需要重新配置。解决这个麻烦的时候发现这样写就可以了。 上述两个属性适用于其他标签 --> <javaModelGenerator targetPackage="com.example.testing_mybatis.entity" targetProject="src\main\java"> <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false --> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!--生成xml映射文件存放位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src\main\resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--生成mapper类存放位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.testing_mybatis.mapper" targetProject="src\main\java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!--生成对应表及类名--> <table tableName="tb_person" domainObjectName="Person" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <property name="my.isgen.usekeys" value="true"/> <property name="useActualColumnNames" value="true"/> <generatedKey column="id" sqlStatement="JDBC"/> </table> </context> </generatorConfiguration>
上边有配置了数据库的连接在另外一个文件中
jdbc.driverLocation=H:\apache-maven-3.6.0\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost/test?useSSL=FALSE&serverTimezone=GMT%2b8&characterEncoding=UTF-8&allowPublicKeyRetrieval=true jdbc.username=root jdbc.password=cdss
上述配置有问题。不利于下次拷贝。那么,暂且在此粘贴一个正确的配置文件。
jdbc.driverLocation=H:/apache-maven-3.6.0/repository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.connectionURL=jdbc:mysql://localhost/test?useSSL=FALSE&serverTimezone=GMT%2b8&characterEncoding=UTF-8&allowPublicKeyRetrieval=true jdbc.username=root jdbc.password=cdss
-
添加完成后,点击maven下的插件generator生成。
到此完成。其实这里边是有错误的。
Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate failed: Cannot resolve classpath entry: H:apache-maven-3.6.0
上述错误是因为 数据库连接的属性 jdbc.driverLocation 写错了。以前测试过但是没用过。项目还是以前的只是变更了一下电脑再次生成竟然错误了。那么,找到问题了。是driverLocation的值错了,应该写成:
H:/apache-maven-3.6.0/repository/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar 当然您得用您自己的。
至于里边的详细配置属性有简书地址:https://www.jianshu.com/p/e09d2370b796