转载地址:http://blog.csdn.net/wyc_cs/article/details/9023117
由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类、Dao接口类甚至Mapping映射文件。
一、建立表结构
CREATE TABLE `user` (   `id` varchar(50) NOT NULL,   `username` varchar(18) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,   `password` varchar(18) DEFAULT NULL,   `email` varchar(50) DEFAULT NULL,   `name` varchar(18) DEFAULT NULL,   `sex` varchar(2) DEFAULT NULL,   `birthday` varchar(50) DEFAULT NULL,   `address` varchar(500) DEFAULT NULL,   `tel` varchar(18) DEFAULT NULL,   `qq` varchar(18) DEFAULT NULL,   `image` varchar(50) DEFAULT NULL,   `sfjh` varchar(1) DEFAULT NULL,   `sfzx` varchar(1) DEFAULT NULL,   `sfhf` varchar(1) DEFAULT NULL,   `sfpl` varchar(1) DEFAULT NULL,   `sffx` varchar(1) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf-8;
二、下载mybatis-generator-core
进入:http://code.google.com/p/mybatis/
选择Downloads,再选择MyBatis Generator Tool下载即可。
三、生成配置文件
新建一个空的XML配置文件,名称可以随便取,这里以generatorConfig.xml为名。最好将这个文件放在下载后的lib目录中,如图:
 
其中mysql的驱动可以随便放在非中文路径的地方,这里为了方便就放在lib目录下。
自动生成最重要的就是配置文件的书写,现在就开始介绍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.0.6-bin.jar"/>  
 
-     <context id="DB2Tables"  targetRuntime="MyBatis3">  
 
-         <commentGenerator>  
 
-             <property name="suppressDate" value="true"/>  
 
-             
 
-             <property name="suppressAllComments" value="true"/>  
 
-         </commentGenerator>  
 
-         
 
-         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/test" userId="test" password="test">  
 
-         </jdbcConnection>  
 
-         <javaTypeResolver>  
 
-             <property name="forceBigDecimals" value="false"/>  
 
-         </javaTypeResolver>  
 
-         
 
-         <javaModelGenerator targetPackage="test.model" targetProject="src">  
 
-             <property name="enableSubPackages" value="true"/>  
 
-             <property name="trimStrings" value="true"/>  
 
-         </javaModelGenerator>  
 
-         
 
-         <sqlMapGenerator targetPackage="test.mapping" targetProject="src">  
 
-             <property name="enableSubPackages" value="true"/>  
 
-         </sqlMapGenerator>  
 
-         
 
-         <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src">  
 
-             <property name="enableSubPackages" value="true"/>  
 
-         </javaClientGenerator>  
 
-         
 
-         <table tableName="about" domainObjectName="AboutDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
 
-         <table tableName="user" domainObjectName="UserDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
 
-         <table tableName="syslogs" domainObjectName="SyslogsDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
 
-     </context>  
 
- </generatorConfiguration>  
 
 
1、其中需要注意的有数据库驱动、数据库URL、用户名、密码、生成模型的包名和位置、生成映射文件的包名和位置、生成DAO的包名和位置以及最后需要生成的表名和对应的类名。
 
 
四、运行
需要通过CMD命令行方式来运行,首先可以先准备一个运行的脚本,这里使用的脚本是:java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite
需要注意的是:mybatis-generator-core-1.3.2.jar为下载的对应版本的jar,generatorConfig.xml 为配置文件名,如果不为这个可以在这里进行修改。
启动cmd进入到“F:\soft\mybatis-generator-core-1.3.2\lib”这个目录下,如图:
 
生成成功后进到src目录下,可以看到已经生成了对应的model、dao、mapping,如图:
 
下面可以看看生成后的UserMapper.xml
 
- <?xml version="1.0" encoding="UTF-8" ?>  
 
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
 
- <mapper namespace="test.dao.UserDtoMapper" >  
 
-   <resultMap id="BaseResultMap" type="test.model.UserDto" >  
 
-     <id column="id" property="id" jdbcType="VARCHAR" />  
 
-     <result column="username" property="username" jdbcType="VARCHAR" />  
 
-     <result column="password" property="password" jdbcType="VARCHAR" />  
 
-     <result column="email" property="email" jdbcType="VARCHAR" />  
 
-     <result column="name" property="name" jdbcType="VARCHAR" />  
 
-     <result column="sex" property="sex" jdbcType="VARCHAR" />  
 
-     <result column="birthday" property="birthday" jdbcType="VARCHAR" />  
 
-     <result column="address" property="address" jdbcType="VARCHAR" />  
 
-     <result column="tel" property="tel" jdbcType="VARCHAR" />  
 
-     <result column="qq" property="qq" jdbcType="VARCHAR" />  
 
-     <result column="image" property="image" jdbcType="VARCHAR" />  
 
-     <result column="sfjh" property="sfjh" jdbcType="VARCHAR" />  
 
-     <result column="sfzx" property="sfzx" jdbcType="VARCHAR" />  
 
-     <result column="sfhf" property="sfhf" jdbcType="VARCHAR" />  
 
-     <result column="sfpl" property="sfpl" jdbcType="VARCHAR" />  
 
-     <result column="sffx" property="sffx" jdbcType="VARCHAR" />  
 
-   </resultMap>  
 
-   <sql id="Base_Column_List" >  
 
-     id, username, password, email, name, sex, birthday, address, tel, qq, image, sfjh,   
 
-     sfzx, sfhf, sfpl, sffx  
 
-   </sql>  
 
-   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >  
 
-     select   
 
-     <include refid="Base_Column_List" />  
 
-     from user  
 
-     where id = #{id,jdbcType=VARCHAR}  
 
-   </select>  
 
-   <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >  
 
-     delete from user  
 
-     where id = #{id,jdbcType=VARCHAR}  
 
-   </delete>  
 
-   <insert id="insert" parameterType="test.model.UserDto" >  
 
-     insert into user (id, username, password,   
 
-       email, name, sex, birthday,   
 
-       address, tel, qq, image,   
 
-       sfjh, sfzx, sfhf, sfpl,   
 
-       sffx)  
 
-     values (#{id,jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},   
 
-       #{email,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthday,jdbcType=VARCHAR},   
 
-       #{address,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR}, #{qq,jdbcType=VARCHAR}, #{image,jdbcType=VARCHAR},   
 
-       #{sfjh,jdbcType=VARCHAR}, #{sfzx,jdbcType=VARCHAR}, #{sfhf,jdbcType=VARCHAR}, #{sfpl,jdbcType=VARCHAR},   
 
-       #{sffx,jdbcType=VARCHAR})  
 
-   </insert>  
 
-   <insert id="insertSelective" parameterType="test.model.UserDto" >  
 
-     insert into user  
 
-     <trim prefix="(" suffix=")" suffixOverrides="," >  
 
-       <if test="id != null" >  
 
-         id,  
 
-       </if>  
 
-       <if test="username != null" >  
 
-         username,  
 
-       </if>  
 
-       <if test="password != null" >  
 
-         password,  
 
-       </if>  
 
-       <if test="email != null" >  
 
-         email,  
 
-       </if>  
 
-       <if test="name != null" >  
 
-         name,  
 
-       </if>  
 
-       <if test="sex != null" >  
 
-         sex,  
 
-       </if>  
 
-       <if test="birthday != null" >  
 
-         birthday,  
 
-       </if>  
 
-       <if test="address != null" >  
 
-         address,  
 
-       </if>  
 
-       <if test="tel != null" >  
 
-         tel,  
 
-       </if>  
 
-       <if test="qq != null" >  
 
-         qq,  
 
-       </if>  
 
-       <if test="image != null" >  
 
-         image,  
 
-       </if>  
 
-       <if test="sfjh != null" >  
 
-         sfjh,  
 
-       </if>  
 
-       <if test="sfzx != null" >  
 
-         sfzx,  
 
-       </if>  
 
-       <if test="sfhf != null" >  
 
-         sfhf,  
 
-       </if>  
 
-       <if test="sfpl != null" >  
 
-         sfpl,  
 
-       </if>  
 
-       <if test="sffx != null" >  
 
-         sffx,  
 
-       </if>  
 
-     </trim>  
 
-     <trim prefix="values (" suffix=")" suffixOverrides="," >  
 
-       <if test="id != null" >  
 
-         #{id,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="username != null" >  
 
-         #{username,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="password != null" >  
 
-         #{password,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="email != null" >  
 
-         #{email,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="name != null" >  
 
-         #{name,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sex != null" >  
 
-         #{sex,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="birthday != null" >  
 
-         #{birthday,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="address != null" >  
 
-         #{address,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="tel != null" >  
 
-         #{tel,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="qq != null" >  
 
-         #{qq,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="image != null" >  
 
-         #{image,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfjh != null" >  
 
-         #{sfjh,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfzx != null" >  
 
-         #{sfzx,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfhf != null" >  
 
-         #{sfhf,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfpl != null" >  
 
-         #{sfpl,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sffx != null" >  
 
-         #{sffx,jdbcType=VARCHAR},  
 
-       </if>  
 
-     </trim>  
 
-   </insert>  
 
-   <update id="updateByPrimaryKeySelective" parameterType="test.model.UserDto" >  
 
-     update user  
 
-     <set >  
 
-       <if test="username != null" >  
 
-         username = #{username,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="password != null" >  
 
-         password = #{password,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="email != null" >  
 
-         email = #{email,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="name != null" >  
 
-         name = #{name,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sex != null" >  
 
-         sex = #{sex,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="birthday != null" >  
 
-         birthday = #{birthday,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="address != null" >  
 
-         address = #{address,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="tel != null" >  
 
-         tel = #{tel,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="qq != null" >  
 
-         qq = #{qq,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="image != null" >  
 
-         image = #{image,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfjh != null" >  
 
-         sfjh = #{sfjh,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfzx != null" >  
 
-         sfzx = #{sfzx,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfhf != null" >  
 
-         sfhf = #{sfhf,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sfpl != null" >  
 
-         sfpl = #{sfpl,jdbcType=VARCHAR},  
 
-       </if>  
 
-       <if test="sffx != null" >  
 
-         sffx = #{sffx,jdbcType=VARCHAR},  
 
-       </if>  
 
-     </set>  
 
-     where id = #{id,jdbcType=VARCHAR}  
 
-   </update>  
 
-   <update id="updateByPrimaryKey" parameterType="test.model.UserDto" >  
 
-     update user  
 
-     set username = #{username,jdbcType=VARCHAR},  
 
-       password = #{password,jdbcType=VARCHAR},  
 
-       email = #{email,jdbcType=VARCHAR},  
 
-       name = #{name,jdbcType=VARCHAR},  
 
-       sex = #{sex,jdbcType=VARCHAR},  
 
-       birthday = #{birthday,jdbcType=VARCHAR},  
 
-       address = #{address,jdbcType=VARCHAR},  
 
-       tel = #{tel,jdbcType=VARCHAR},  
 
-       qq = #{qq,jdbcType=VARCHAR},  
 
-       image = #{image,jdbcType=VARCHAR},  
 
-       sfjh = #{sfjh,jdbcType=VARCHAR},  
 
-       sfzx = #{sfzx,jdbcType=VARCHAR},  
 
-       sfhf = #{sfhf,jdbcType=VARCHAR},  
 
-       sfpl = #{sfpl,jdbcType=VARCHAR},  
 
-       sffx = #{sffx,jdbcType=VARCHAR}  
 
-     where id = #{id,jdbcType=VARCHAR}  
 
-   </update>  
 
- </mapper>  
 
 
接下来就可以将这三个目录拷贝到对应项目的目录中,如果需要新增自己的方法可以修改dao类。
 
自己的体会:1、要使用MyBatis_Generator生成Dto、Dao、Mapping的话,必须要现在数据库中建立表格,然后mybatis_generator才能根据表格建立相应的dto,dao,mapping.
    2、mybatis-generator-core-1.3.2.jar 要和相应的generatorConfig.xml(配置文件)放在同一个目录下面
使用MyBatis_Generator生成Dto、Dao、Mapping
原文:http://www.cnblogs.com/slimo/p/4852246.html