MyBatis学习--逆向工程
- 简介
mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..)。企业实际开发中,常用的逆向工程方式:由于数据库的表生成java代码。Hibernate也有逆向工程,这也可以减少程序员不少配置的事情,只需要在生成逆向工程文件的时候检查是否符合开发要求即可。
MyBatis官网提供了多种逆向工程工具,如:使用eclipce插件、使用java程序方式等。建议使用java程序的方式。
- java程序方式生成逆向工程
1、mapper生成配置文件:
1 <generatorConfiguration> 2 <context id="testTables" targetRuntime="MyBatis3"> 3 <commentGenerator> 4 <!-- 是否去除自动生成的注释 true:是 : false:否 --> 5 <property name="suppressAllComments" value="false" /> 6 </commentGenerator> 7 <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> 8 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 9 connectionURL="jdbc:mysql://localhost:3306/shop" userId="root" 10 password=""> 11 </jdbcConnection> 12 <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" 13 connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 14 userId="yycg" 15 password="yycg"> 16 </jdbcConnection> --> 17 18 <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 19 NUMERIC 类型解析为java.math.BigDecimal --> 20 <javaTypeResolver> 21 <property name="forceBigDecimals" value="false" /> 22 </javaTypeResolver> 23 24 <!-- targetProject:生成PO类的位置 --> 25 <javaModelGenerator targetPackage="com.luchao.mybatis.first.po" 26 targetProject=".\src"> 27 <!-- enableSubPackages:是否让schema作为包的后缀 --> 28 <property name="enableSubPackages" value="false" /> 29 <!-- 从数据库返回的值被清理前后的空格 --> 30 <property name="trimStrings" value="true" /> 31 </javaModelGenerator> 32 <!-- targetProject:mapper映射文件生成的位置 --> 33 <sqlMapGenerator targetPackage="com.luchao.mybatis.first.mapper" 34 targetProject=".\src"> 35 <!-- enableSubPackages:是否让schema作为包的后缀 --> 36 <property name="enableSubPackages" value="false" /> 37 </sqlMapGenerator> 38 <!-- targetPackage:mapper接口生成的位置 --> 39 <javaClientGenerator type="XMLMAPPER" 40 targetPackage="com.luchao.mybatis.first.mapper" 41 targetProject=".\src"> 42 <!-- enableSubPackages:是否让schema作为包的后缀 --> 43 <property name="enableSubPackages" value="false" /> 44 </javaClientGenerator> 45 <!-- 指定数据库表 --> 46 <table tableName="items"></table> 47 <table tableName="orders"></table> 48 <table tableName="orderdetail"></table> 49 <table tableName="user"></table> 50 <!-- <table schema="" tableName="sys_user"></table> 51 <table schema="" tableName="sys_role"></table> 52 <table schema="" tableName="sys_permission"></table> 53 <table schema="" tableName="sys_user_role"></table> 54 <table schema="" tableName="sys_role_permission"></table> --> 55 56 <!-- 有些表的字段需要指定java类型 57 <table schema="" tableName=""> 58 <columnOverride column="" javaType="" /> 59 </table> --> 60 </context> 61 </generatorConfiguration>
2、执行生成程序
1 public class GeneratorSqlmap { 2 3 public void generator() throws Exception{ 4 5 List<String> warnings = new ArrayList<String>(); 6 boolean overwrite = true; 7 //逆向工程配置文件所在位置 8 File configFile = new File("generatorConfig.xml"); 9 ConfigurationParser cp = new ConfigurationParser(warnings); 10 Configuration config = cp.parseConfiguration(configFile); 11 DefaultShellCallback callback = new DefaultShellCallback(overwrite); 12 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, 13 callback, warnings); 14 myBatisGenerator.generate(null); 15 16 } 17 public static void main(String[] args) throws Exception { 18 try { 19 GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); 20 generatorSqlmap.generator(); 21 } catch (Exception e) { 22 e.printStackTrace(); 23 } 24 25 } 26 27 }
3、将生成的文件放到自己的项目中进行测试。
总结,一般代逆向工程用于在企业开发中根据自己公司的代码情况做代码生成器,这样可以减少需要POJO、Mapper映射文件和Mapper接口的编程,然后根据具体的需求在进行修改。