mybatis代码自动生成
mybatis持久层框架确实很方便,但是一直手动创建Dao和映射文件是一件无聊且缺乏技术含量的工作。所以我们可以使用mybatis的代码自动生成工具来减少我们的工作。它能帮助我们根据数据库中的数据表生成对应的Dao,也能生成简单的一些SQL映射,当然复杂的SQL映射还是需要我们自己手动去写。
maven的配置我就不写了,baidu一下就有了。
首先我们使用eclipse创建maven web app,然后添加javaee需要的一些依赖:
<!-- j2ee需要的jar:start --> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> <scope>runtime</scope> </dependency> <!-- j2ee需要的jar:end -->
然后我们需要添加mybatis generator插件:
<pluginManagement> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> </dependencies> </plugin> </plugins> </pluginManagement>
接下来是配置文件:
src/main/resources/mybatis-generator/generatorConfig.xml:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 6 <generatorConfiguration> 7 <properties resource="mybatis-generator/generatorConfig.properties" /> 8 <classPathEntry location="${jdbc_driverPath}" /> 9 <context id="my" targetRuntime="MyBatis3"> 10 <commentGenerator> 11 <property name="suppressDate" value="false" /> 12 <!-- 下面一行用于取消注释的生成 --> 13 <property name="suppressAllComments" value="true" /> 14 </commentGenerator> 15 16 <jdbcConnection driverClass="${jdbc_driverClassName}" 17 connectionURL="${jdbc_url}" userId="${jdbc_username}" password="${jdbc_password}" /> 18 19 <javaModelGenerator targetPackage="${modelPackage}" 20 targetProject="${targetProject}"> 21 <property name="enableSubPackages" value="true" /> 22 <property name="trimStrings" value="true" /> 23 </javaModelGenerator> 24 25 <sqlMapGenerator targetPackage="${mappingPackage}" 26 targetProject="${targetProject}"> 27 <property name="enableSubPackages" value="true" /> 28 </sqlMapGenerator> 29 30 <javaClientGenerator targetPackage="${mapperPackage}" 31 targetProject="${targetProject}" type="XMLMAPPER"> 32 <property name="enableSubPackages" value="true" /> 33 </javaClientGenerator> 34 35 <table schema="test" tableName="user" domainObjectName="User" 36 enableCountByExample="false" enableUpdateByExample="false" 37 enableDeleteByExample="false" enableSelectByExample="false" 38 selectByExampleQueryId="false"> 39 <!--<columnRenamingRule searchString="^D_" replaceString=""/> --> 40 </table> 41 42 </context> 43 </generatorConfiguration>
注意:
- table标签是配置从数据表到Dao(Model)的映射,schema是数据库名;domainObjectName是要生成的Dao名称,我这里写的是User,则自动生成的文件有User.java,UserMapper.java,UserMapper.xml。
src/main/resources/mybatis-generator/generatorConfig.properties:
1 jdbc_driverClassName=com.mysql.jdbc.Driver 2 jdbc_driverPath=C:/Users/Rainmer/.m2/repository/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar 3 jdbc_url=jdbc:mysql://localhost:3306/yourDBName?useUnicode=true&characterEncoding=UTF-8 4 jdbc_username=**** 5 jdbc_password=****** 6 targetProject=E:/workspace/JAVAEE_Pro/mbgtest/src/main/java 7 modelPackage=com.simon.mbgtest.model 8 mapperPackage=com.simon.mbgtest.mapper 9 mappingPackage=com.simon.mbgtest.mapping
注意:
- jdbc_url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8。userUnicode和characterEncoding之间的连接符&要转义,变成&
- 路径要用斜杠/,而windows平台地址栏复制出来的地址用的是反斜杠\;
配置完了之后,我们需要运行命令,eclipse luna版本自带maven插件,所以我们可以右键工程——>run as——>Maven build...——>弹框的Name中填写mybatis-generator,易于理解,然后在Goals中填写mybatis-generator:generate,这是maven的mybatis-generator插件的命令,最后点击Run,项目就开始build了。最后你可以查看项目目录,结构如下:
That's all。
当然也可以不借助maven,那么你需要导入几个jar包:mybatis-generator-maven-plugin-1.3.2.jar,mybatis-generator-core1.3.2.jar,mybatis-3.3.0.jar,mysql-connector-java-5.1.21.jar(我用的MySQL)。然后用命令行运行命令:java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml全路径 -overwrite,记得要在mybatis-generator-core-1.3.2.jar所在的目录下执行该命令。overwrite命令是用于覆盖已经生成的文件。此处有一个很不方便的问题,就是运行的时候它会找不到generatorConfig.properties,虽然我们在eclipse中是没问题的。我只能把相关的属性值写回generatorConfig.xml中,然后修改了部分参数。注意:生成的文件所在的目录必须已经存在,否则会报路径not exist的错。
运行效果:
源码下载:
maven版:http://yunpan.cn/cdcmpRvHEZwxH 访问密码 fba9
非maven版:http://yunpan.cn/cdcmTLUuXNjPa 访问密码 aec3