以前每次用MyBatis,都是自己手工写MyBatis的Mapper接口和Mapper.xml文件,自从发现有了MyBatis逆向工程后,在配置文件中写好数据库连接信息以及要逆向的表之后,写上几行代码,运行代码,MyBatis的Mapper接口和Mapper.xml文件一秒生成,极大的提高了效率,简直太酷了;
通过MyBatis逆向工程生成Mapper接口和Mapper.xml文件的步骤如下:
1、下载MyBatis逆向工程包mybatis-generator-core-1.3.2.jar和mybatis的jar包;
2、在数据库中建好库和表,这里以MySql为例,在MySql中建好库和表;
3、新建java工程项目,导入mybatis-generator-core-1.3.2.jar和相关Mybatis的jar包;
4、添加配置文件generatorConfig.xml,内容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 3 4 <generatorConfiguration> 5 <context id="testTables" targetRuntime="MyBatis3"> 6 <commentGenerator> 7 <!-- 是否去除自动生成的注释 true:是 : false:否 --> 8 <property name="suppressAllComments" value="true" /> 9 </commentGenerator> 10 <!--数据库连接的信息:驱动类、连接地址、用户名、密码 --> 11 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 12 connectionURL="jdbc:mysql://localhost:3306/test" userId="root" 13 password="123"> 14 </jdbcConnection> 15 16 <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 17 NUMERIC 类型解析为java.math.BigDecimal --> 18 <javaTypeResolver> 19 <property name="forceBigDecimals" value="false" /> 20 </javaTypeResolver> 21 22 <!-- targetProject:生成PO类的位置 --> 23 <javaModelGenerator targetPackage="com.xupt.sm.po" 24 targetProject=".src"> 25 <!-- enableSubPackages:是否让schema作为包的后缀 --> 26 <property name="enableSubPackages" value="false" /> 27 <!-- 从数据库返回的值被清理前后的空格 --> 28 <property name="trimStrings" value="true" /> 29 </javaModelGenerator> 30 <!-- targetProject:mapper映射文件生成的位置 --> 31 <sqlMapGenerator targetPackage="com.xupt.sm.mapper" 32 targetProject=".src"> 33 <!-- enableSubPackages:是否让schema作为包的后缀 --> 34 <property name="enableSubPackages" value="false" /> 35 </sqlMapGenerator> 36 <!-- targetPackage:mapper接口生成的位置 --> 37 <javaClientGenerator type="XMLMAPPER" 38 targetPackage="com.xupt.sm.mapper" 39 targetProject=".src"> 40 <!-- enableSubPackages:是否让schema作为包的后缀 --> 41 <property name="enableSubPackages" value="false" /> 42 </javaClientGenerator> 43 <!-- 指定数据库表 --> 44 <table tableName="addresses"></table> 45 <table tableName="course_enrollment"></table> 46 <table tableName="courses"></table> 47 <table tableName="students"></table> 48 <table tableName="tutors"></table> 49 </context> 50 </generatorConfiguration>
其中jdbcConnection部分修改成自己本机的数据库连接配置和用户名密码,javaModelGenerator中的targetProject为生成PO实体类文件的目录,默认为src目录,一般保持默认即可, targetPackage指定了生成PO实体类文件的包名,修改成自己的包名即可,sqlMapGenerator中的targetProject和targetPackage指定了mapper文件生成的目录和包名,javaClientGenerator中的targetProject和targetPackage指定了mapper接口文件生成的目录和包名;最地下的table信息指定了要逆向的表名,有多少个写多少个;
5、新建类GeneratorSqlmap并编写代码:
1 public class GeneratorSqlmap { 2 3 public void generator() throws Exception{ 4 List<String> warnings = new ArrayList<String>(); 5 boolean overwrite = true; 6 //指定 逆向工程配置文件 7 File configFile = new File("generatorConfig.xml"); 8 ConfigurationParser cp = new ConfigurationParser(warnings); 9 Configuration config = cp.parseConfiguration(configFile); 10 DefaultShellCallback callback = new DefaultShellCallback(overwrite); 11 MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); 12 myBatisGenerator.generate(null); 13 } 14 15 public static void main(String[] args) throws Exception { 16 try { 17 GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); 18 generatorSqlmap.generator(); 19 } catch (Exception e) { 20 e.printStackTrace(); 21 } 22 } 23 }
6、运行GeneratorSqlmap的main方法,刷新src目录,可以看到src目录下生成了对应的mapper接口文件,mapper.xml文件和PO实体类文件,然后在这些文件上修改少量代码即可;