Mybatis Generator(逆向工程)
Mybatis Generator(逆向工程)
编程的一部分意义就在于消除人类的重复劳动,所以重复的编程天然就不该存在;
mybatis的逆向工程解决了利用ssm框架编写Javaweb项目时每次都要要机械重复的编写pojo、dao、mapper的问题。
mybatis逆向工程通过简单的配置就可以快速生成我们每次新建ssm项目时pojo、dao、mapper层的通用基础模板;通过简单的改写,我们可以就快速进入业务编写的工作;
使用
-
首先引入所需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包;
-
编写配置文件
配置文件的编写,及关于逆向工程的其它问题可以参考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>

浙公网安备 33010602011771号