MyBatis Generator生成代码的几种方式
来源:互联网 发布:数据库触发器 编辑:程序博客网 时间:2024/06/03 18:57
由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapper映射文件。这样可以省去一部分的功夫,下面将介绍几种生成方式:
MyBatis Generator 参考文档:http://blog.csdn.net/isea533/article/details/42102297 http://www.mybatis.org/generator/running/running.html
第一种:使用命令行创建
生成代码需要的文件和jar包:
其中有mybatis框架的jar包,数据库驱动程序jar包以及MyBatis生成器jar包。其中的generatorConfig.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> <!-- 数据库驱动--> <classPathEntry location="mysql-connector-java-5.1.7-bin.jar"/> <!-- jdbc.driver=com.mysql.jdbc.Driverurl=jdbc:mysql:///testusername=rootpassword=123456 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释带时间戳--> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///test" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver><!-- 修改包名字 --> <javaModelGenerator targetPackage="com.solin.entity" targetProject="../src"> <property name="enableSubPackages" value="false" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.solin.mapper" targetProject="../src"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.solin.mapper" targetProject="../src"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>当以上这些完成之后,只需要打开控制台,进入lib目录下,执行脚本:java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite即可。
这样在生成之后,就可以在src目录下找到相应的文件夹,每张表都会对应三个文件(实体类、接口、配置文件)。
最后附上相关jar包以及完整demo:http://download.csdn.net/download/qq_32786873/10020288
第二种:通过MybatisGenerator类和配置文件生成代码
项目结构如下:
generatorConfig.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> <!-- 数据库驱动--> <classPathEntry location="/"/> <!-- jdbc.driver=com.mysql.jdbc.Driverurl=jdbc:mysql:///testusername=rootpassword=123456 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释带时间戳--> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///test" userId="root" password="123456"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver><!-- 修改包名字 --> <javaModelGenerator targetPackage="com.solin.entity" targetProject=".\src"> <property name="enableSubPackages" value="false" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.solin.mapper" targetProject=".\src"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.solin.mapper" targetProject=".\src"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>创建MybatisGeneratorUtil类:
package com.solin;import java.io.File;import java.util.ArrayList;import java.util.List;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback;public class MybatisGeneratorUtil {public static void main(String[] args) throws Exception { generator();}private static void generator() throws Exception {List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configFile = new File("generatorConfig.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("代码生成完毕>>>>>>>>>>>>");}}执行main方法就可以生成代码了,执行后的结果如下:
最后附上完整demo:http://download.csdn.net/download/qq_32786873/10020408
第三种方式 通过GeneratorAntTask类和配置文件生成
项目结构如下:
generatorConfig.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> <!-- 数据库驱动--> <classPathEntry location="/"/> <!-- jdbc.driver=com.mysql.jdbc.Driverurl=jdbc:mysql:///testusername=rootpassword=root --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释带时间戳--> </commentGenerator> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql:///test" userId="root" password="root"> </jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver><!-- 修改包名字 --> <javaModelGenerator targetPackage="com.solin.entity" targetProject=".\src"> <property name="enableSubPackages" value="false" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <sqlMapGenerator targetPackage="com.solin.mapper" targetProject=".\src"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.solin.mapper" targetProject=".\src"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> </table> </context> </generatorConfiguration>
创建GeneratorAntTaskUtil类:
package com.solin;import org.mybatis.generator.ant.GeneratorAntTask;public class GeneratorAntTaskUtil {public static void main(String[] args) throws Exception { generator();}private static void generator() throws Exception { GeneratorAntTask task = new GeneratorAntTask(); task.setConfigfile("generatorConfig.xml"); //(配置文件具体path) task.execute(); System.out.println("代码生成完毕>>>>>>>>>>>>");}}
执行main方法就可以生成代码了,执行后的结果如下:
最后附上完整demo:http://download.csdn.net/download/qq_32786873/10022347
第四种:基于Maven插件的方式
首先创建一个Maven工程,项目目录如下:
pom.xml文件配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.solin</groupId> <artifactId>autoGenerate</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>autoGenerate</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <build><finalName>autoGenerate</finalName><plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>Generate MyBatis Files</id> <goals> <goal>generate</goal> </goals> <phase>generate</phase> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> </dependencies> </plugin> </plugins></build></project>generatorConfig.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><!-- 引入配置文件 --> <properties resource="application.properties"/><!-- 一个数据库一个context --> <context id="MBG" targetRuntime="MyBatis3"> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /> <plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin" /> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin> <!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释带时间戳--> </commentGenerator> <!-- jdbc连接 --> <jdbcConnection driverClass="${jdbc.driverClassName}" connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"> </jdbcConnection> <!-- 类型转换 --> <javaTypeResolver> <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成实体类地址 --> <javaModelGenerator targetPackage="${package.entity}" targetProject="src/main/java"> <!-- 该属性只对MyBatis3有效,如果true就会使用构造方法入参,如果false就会使用setter方式。默认为false。 --> <property name="constructorBased" value="true" /> <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] --> <property name="enableSubPackages" value="false" /> <!-- 是否针对string类型的字段在set的时候进行trim调用 --> <property name="trimStrings" value="true" /> </javaModelGenerator><!-- 生成mapxml文件 --> <sqlMapGenerator targetPackage="${package.mapper}" targetProject="src/main/java"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator><!-- 生成mapxml对应client,也就是接口dao --> <javaClientGenerator type="XMLMAPPER" targetPackage="${package.mapper}" targetProject="src/main/java"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素 选择的table会生成一下文件: 1,SQL map文件 2,生成一个主键类; 3,除了BLOB和主键的其他字段的类; 4,包含BLOB的类; 5,一个用户生成动态查询的条件类(selectByExample, deleteByExample),可选; 6,Mapper接口(可选) tableName(必要):要生成对象的表名; 注意:大小写敏感问题。正常情况下,MBG会自动的去识别数据库标识符的大小写敏感度,在一般情况下,MBG会 根据设置的schema,catalog或tablename去查询数据表,按照下面的流程: 1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使用指定的大小写格式去查询; 2,否则,如果数据库的标识符使用大写的,那么MBG自动把表名变成大写再查找; 3,否则,如果数据库的标识符使用小写的,那么MBG自动把表名变成小写再查找; 4,否则,使用指定的大小写格式查询; 另外的,如果在创建表的时候,使用的""把数据库对象规定大小写,就算数据库标识符是使用的大写,在这种情况下也会使用给定的大小写来创建表名; 这个时候,请设置delimitIdentifiers="true"即可保留大小写格式; 可选: 1,schema:数据库的schema; 2,catalog:数据库的catalog; 3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的SELECT SQL语句中,列名会变成:alias_actualColumnName 4,domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面; 5,enableInsert(默认true):指定是否生成insert语句; 6,enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get); 7,enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句; 8,enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update); 9,enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete); 10,enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句; 11,enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询); 12,enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性); 13,modelType:参考context元素的defaultModelType,相当于覆盖; 14,delimitIdentifiers:参考tableName的解释,注意,默认的delimitIdentifiers是双引号,如果类似MYSQL这样的数据库,使用的是`(反引号,那么还需要设置context的beginningDelimiter和endingDelimiter属性) 15,delimitAllColumns:设置是否所有生成的SQL中的列名都使用标识符引起来。默认为false,delimitIdentifiers参考context的属性 注意,table里面很多参数都是对javaModelGenerator,context等元素的默认属性的一个复写; --> <table tableName="${tableName}" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <!-- 参考 javaModelGenerator 的 constructorBased属性--> <property name="constructorBased" value="true" /> <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate --> <property name="useActualColumnNames" value="false" /> <!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; --> <property name="ignoreQualifiersAtRuntime" value="false" /> <!-- 参考 javaModelGenerator 的 immutable 属性 --> <!-- <property name="immutable" value="false"/> --> </table> </context></generatorConfiguration>对于generatorConfig.xml文件中引入的application.properties文件,里面主要是数据库连接信息和生成的文件的目录信息,application.properties文件配置如下:
jdbc.url=jdbc:mysql:///test?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf8jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.username=rootjdbc.password=rootpackage.entity=com.solin.autoGenerate.entitypackage.mapper=com.solin.autoGenerate.mapper#指定要生成代码的表名,如果tableName等于%,则生成全部表的代码tableName=user以上文件配置好了之后,在项目上点击右键,如图:
在点击Run Configurations以后,会弹出对话框,在对话框上找到Maven Build,然后右键并且点击new,如下图:
在新出现的界面上填写Name,Base directory,Goals这三个地方,其中Name可以随便写,Base directory是你的工程的路径,Goals这个地方不用变,照着图写,这个是maven插件的命令。至于Maven Runtime下拉框可以不选,也可以选择自己安装在eclipse外面的那个。
点击Apply,在点击 Run,稍等一会,你可以看到generate执行成功了,如图:
刷新项目,可以看到生成的文件,如图:
最后附上完整demo:http://download.csdn.net/download/qq_32786873/10022351
第五种:通过eclipse mybatis generater代码生成插件自动生成代码
详细说明见:http://blog.csdn.net/qq_32786873/article/details/78226513
- MyBatis Generator生成代码的几种方式
- Mybatis generator自动生成代码的几种方法
- MyBatis Generator生成代码的四种方式
- mybatis代码生成的几种方式
- mybatis代码生成的几种方式
- mybatis代码生成的几种方式
- mybatis代码生成的几种方式
- MyBatis-Generator 代码生成
- mybatis-generator 代码生成
- mybatis-generator生成代码
- mybatis generator生成代码
- Mybatis generator生成代码
- Mybatis generator 生成代码
- 代码生成神器:MyBatis Generator的使用
- mybatis-generator 代码自动生成工具(maven方式)
- mybatis-generator 代码自动生成工具(maven方式)
- mybatis-generator 代码自动生成工具(maven方式)
- mybatis-generator 代码自动生成工具(maven方式)
- timestamp的字段设计
- Nginx优化相关
- 洛谷P1092
- 《算导》练习题 2.3-7
- 一些可能帮得上忙的网站
- MyBatis Generator生成代码的几种方式
- Java——线程的加入
- LeetCode--Word Search
- xdoj 1056 寻找BOSS
- .gitignore文件配置
- JFinal连接两个MYSQL数据的前提下连接第三个ORACLE数据库
- jdk配置是path和classpath的含义
- ALSA install
- 进行左右滑动操作后显示出指定控件