Mybatis Generator(逆向工程)

Mybatis Generator(逆向工程)

编程的一部分意义就在于消除人类的重复劳动,所以重复的编程天然就不该存在;

mybatis的逆向工程解决了利用ssm框架编写Javaweb项目时每次都要要机械重复的编写pojo、dao、mapper的问题。

mybatis逆向工程通过简单的配置就可以快速生成我们每次新建ssm项目时pojo、dao、mapper层的通用基础模板;通过简单的改写,我们可以就快速进入业务编写的工作;

使用

  1. 首先引入所需jar包

    maven项目在pom文件中引入:

    <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
    <dependency>
     <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-core</artifactId>
     <version>1.3.7</version>
    </dependency>
    
    

    普通web项目可以去这里下载所需jar包;

  2. 编写配置文件

    配置文件的编写,及关于逆向工程的其它问题可以参考Mybatis Generator的官方文档;下面摘取介绍一下常用配置(完整xml在文末)

    首先配置所连数据库

    <jdbcConnection 
           	driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/testdatabase"
            userId="username"
            password="password">
    </jdbcConnection>
    

    配置与数据库中单表所对应的Java对象(po、domain)层

    这层怎么取名的都有,不止我上面及下面列出来的这几个,看个人习惯吧,下面是我随机百度的一个叫夏天里的Jasmine 博主的分析,合作项目最好统一一下。

    POJO:POJO是Plain OrdinaryJava Object的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。
    domain:domain这个包国外很多项目经常用到,字面意思是域的意思。

    PO: POJO在持久层的体现,对POJO持久化后就成了PO。PO更多的是跟数据库设计层面相关,一般PO与数据表对应,一个PO就是对应数据表的一条记录。

    <!--./src/main/java 表示当前项目下的src/main/java(maven项目的默认结构),targetPackage则是指定包名  -->
    <javaModelGenerator targetPackage="hoimsys.pojo" targetProject="./src/main/java">
          <property name="enableSubPackages" value="true" />
          <property name="trimStrings" value="true" />
    </javaModelGenerator>
    

    配置dao层接口的生成位置

    <javaClientGenerator type="XMLMAPPER" 
                         targetPackage="hoimsys.dao"
                         targetProject="./src/main/java">
          <property name="enableSubPackages" value="true" />
    </javaClientGenerator>
    

    配置mapper文件生成位置

    <sqlMapGenerator targetPackage="mapper"  targetProject="./src/main/resources">
          <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>
    

    配置每个表的生成策略

    <!-- 简单配置一下表名与生成类名就能用 -->
    <table tableName="department" domainObjectName="Department" ></table>
    

    至此,在配置文件中配置这么多就可以用了,随便在那个测试中运行以下代码,刷新项目即可真香;

    public static void main(String[] args) throws Exception {
    		 List<String> warnings = new ArrayList<String>();
    		   boolean overwrite = true;
    		   File configFile = new File("MBG.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);
    	}
    

    一个建议的可选配置

     <!-- 配置这个设置后生成的代码就会清爽很多(就不会生成那些看不懂的英文注释了...) -->
    <commentGenerator>
      <property name="suppressAllComments" value="true" />
    </commentGenerator>
    

    最后

    如果有N张表,就会生成2N个PO,N个mapper.java以及N个mapper.xml,因为它除了常规的PO之外还生成了用于设置条件的xxxExample,不喜欢用删了就好,没事最好还是研究一下怎么用;

    以下测试MBG.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>
    
    	<context id="DB2Tables" targetRuntime="MyBatis3">
    		<commentGenerator>
    			<!-- 配置这个设置后生成的代码就会清爽很多(就不会生成那些看不懂的英文注释了...) -->
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://localhost:3306/hoimsys" userId="root"
    			password="123456">
    		</jdbcConnection>
    
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    
    		<!--./src/main/java 表示当前项目下的src/main/java(maven项目的默认结构),targetPackage则是指定包名 -->
    		<javaModelGenerator targetPackage="hoimsys.pojo"
    			targetProject="./src/main/java">
    			<property name="enableSubPackages" value="true" />
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    
    		<sqlMapGenerator targetPackage="mapper"
    			targetProject="./src/main/resources">
    			<property name="enableSubPackages" value="true" />
    		</sqlMapGenerator>
    
    		<javaClientGenerator type="XMLMAPPER"
    			targetPackage="hoimsys.dao" targetProject="./src/main/java">
    			<property name="enableSubPackages" value="true" />
    		</javaClientGenerator>
    
    		<!-- 简单配置一下表名与生成类名就能用 -->
    		<table tableName="department" domainObjectName="Department"></table>
    		<table tableName="doctor" domainObjectName="Doctor"></table>
    		<table tableName="medicine" domainObjectName="Medicine"></table>
    		<table tableName="patient" domainObjectName="Patient"></table>
    		<table tableName="prescription" domainObjectName="Prescription"></table>
    		<table tableName="registration" domainObjectName="Registration"></table>
    		<table tableName="storage" domainObjectName="Storage"></table>
    		<table tableName="title" domainObjectName="Title"></table>
    
    	</context>
    
    </generatorConfiguration>
    
posted @ 2020-07-27 16:13  时十四  阅读(127)  评论(0)    收藏  举报