正如其名,逆向工程需要配置好相关条件,自动生成对应的实体类,接口和持久化操作。
但是只提供一般的,公用的东西生成,对于特定的东西任然要自己去写,这大大的提高的开发效率。
导入驱动:
1 2 3 4 5
| <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.1</version> </dependency>
|
配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <?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>
<classPathEntry location="C:\mysql-connector-java-8.0.29.jar" />
<context id="Mysql2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"></property> <property name="suppressAllComments" value="true"></property> </commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/2502" userId="root" password="123456"> </jdbcConnection>
<javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver>
<javaModelGenerator targetPackage="cn.k2502.entity" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator>
<sqlMapGenerator targetPackage="cn.k2502.mapper" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.k2502.mapper" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator>
<table tableName="grade" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false"> </table>
<table tableName="student" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false"> </table>
</context> </generatorConfiguration>
|
我们需要执行上面的逆向工程,所以借用一个工具类。
执行逆向工程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| try { System.out.println("start generator ..."); List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //File configFile = new File(MybatisGeneratorUtil.class.getResource("/generator.xml").getFile()); File configFile = new File("C:\\Users\\huaxi\\Desktop\\上课内容\\笔记\\作业代码\\mavenTestDay01\\mybatis02\\src\\main\\resources\\generator.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); System.out.println("end generator!"); } catch (IOException e) { e.printStackTrace(); } catch (XMLParserException e) { e.printStackTrace(); } catch (InvalidConfigurationException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); }
|
如果你和我一样有中文的路径问题,请使用自己的地址替换我的就好了,如果没有就开启他上面的一行。
执行结果:
除了和表对应的实体类Grade和Student外,他还生成了条件类GradeExample和StudentExample。
我们可以随便看一个,他里面提供了一系列的东西。
他提供这样的公开方法createCriteria,返回一个Criteria对象。
使用这个对象就可以设置各种参数和操作。
使用方法的时候注意一下参数类型即可,如andAgeBetween()方法需要的是两个Byte参数。