MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping

由于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这个文件的具体内容:

 

  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. <generatorConfiguration>  
  6. <!-- 数据库驱动-->  
  7.     <classPathEntry  location="mysql-connector-java-5.0.6-bin.jar"/>  
  8.     <context id="DB2Tables"  targetRuntime="MyBatis3">  
  9.         <commentGenerator>  
  10.             <property name="suppressDate" value="true"/>  
  11.             <!-- 是否去除自动生成的注释 true:是 : false:否 -->  
  12.             <property name="suppressAllComments" value="true"/>  
  13.         </commentGenerator>  
  14.         <!--数据库链接URL,用户名、密码 -->  
  15.         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost/test" userId="test" password="test">  
  16.         </jdbcConnection>  
  17.         <javaTypeResolver>  
  18.             <property name="forceBigDecimals" value="false"/>  
  19.         </javaTypeResolver>  
  20.         <!-- 生成模型的包名和位置-->  
  21.         <javaModelGenerator targetPackage="test.model" targetProject="src">  
  22.             <property name="enableSubPackages" value="true"/>  
  23.             <property name="trimStrings" value="true"/>  
  24.         </javaModelGenerator>  
  25.         <!-- 生成映射文件的包名和位置-->  
  26.         <sqlMapGenerator targetPackage="test.mapping" targetProject="src">  
  27.             <property name="enableSubPackages" value="true"/>  
  28.         </sqlMapGenerator>  
  29.         <!-- 生成DAO的包名和位置-->  
  30.         <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src">  
  31.             <property name="enableSubPackages" value="true"/>  
  32.         </javaClientGenerator>  
  33.         <!-- 要生成哪些表-->  
  34.         <table tableName="about" domainObjectName="AboutDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
  35.         <table tableName="user" domainObjectName="UserDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
  36.         <table tableName="syslogs" domainObjectName="SyslogsDto" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
  37.     </context>  
  38. </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

 

    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
    3. <mapper namespace="test.dao.UserDtoMapper" >  
    4.   <resultMap id="BaseResultMap" type="test.model.UserDto" >  
    5.     <id column="id" property="id" jdbcType="VARCHAR" />  
    6.     <result column="username" property="username" jdbcType="VARCHAR" />  
    7.     <result column="password" property="password" jdbcType="VARCHAR" />  
    8.     <result column="email" property="email" jdbcType="VARCHAR" />  
    9.     <result column="name" property="name" jdbcType="VARCHAR" />  
    10.     <result column="sex" property="sex" jdbcType="VARCHAR" />  
    11.     <result column="birthday" property="birthday" jdbcType="VARCHAR" />  
    12.     <result column="address" property="address" jdbcType="VARCHAR" />  
    13.     <result column="tel" property="tel" jdbcType="VARCHAR" />  
    14.     <result column="qq" property="qq" jdbcType="VARCHAR" />  
    15.     <result column="image" property="image" jdbcType="VARCHAR" />  
    16.     <result column="sfjh" property="sfjh" jdbcType="VARCHAR" />  
    17.     <result column="sfzx" property="sfzx" jdbcType="VARCHAR" />  
    18.     <result column="sfhf" property="sfhf" jdbcType="VARCHAR" />  
    19.     <result column="sfpl" property="sfpl" jdbcType="VARCHAR" />  
    20.     <result column="sffx" property="sffx" jdbcType="VARCHAR" />  
    21.   </resultMap>  
    22.   <sql id="Base_Column_List" >  
    23.     id, username, password, email, name, sex, birthday, address, tel, qq, image, sfjh,   
    24.     sfzx, sfhf, sfpl, sffx  
    25.   </sql>  
    26.   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >  
    27.     select   
    28.     <include refid="Base_Column_List" />  
    29.     from user  
    30.     where id = #{id,jdbcType=VARCHAR}  
    31.   </select>  
    32.   <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >  
    33.     delete from user  
    34.     where id = #{id,jdbcType=VARCHAR}  
    35.   </delete>  
    36.   <insert id="insert" parameterType="test.model.UserDto" >  
    37.     insert into user (id, username, password,   
    38.       email, name, sex, birthday,   
    39.       address, tel, qq, image,   
    40.       sfjh, sfzx, sfhf, sfpl,   
    41.       sffx)  
    42.     values (#{id,jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},   
    43.       #{email,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{birthday,jdbcType=VARCHAR},   
    44.       #{address,jdbcType=VARCHAR}, #{tel,jdbcType=VARCHAR}, #{qq,jdbcType=VARCHAR}, #{image,jdbcType=VARCHAR},   
    45.       #{sfjh,jdbcType=VARCHAR}, #{sfzx,jdbcType=VARCHAR}, #{sfhf,jdbcType=VARCHAR}, #{sfpl,jdbcType=VARCHAR},   
    46.       #{sffx,jdbcType=VARCHAR})  
    47.   </insert>  
    48.   <insert id="insertSelective" parameterType="test.model.UserDto" >  
    49.     insert into user  
    50.     <trim prefix="(" suffix=")" suffixOverrides="," >  
    51.       <if test="id != null" >  
    52.         id,  
    53.       </if>  
    54.       <if test="username != null" >  
    55.         username,  
    56.       </if>  
    57.       <if test="password != null" >  
    58.         password,  
    59.       </if>  
    60.       <if test="email != null" >  
    61.         email,  
    62.       </if>  
    63.       <if test="name != null" >  
    64.         name,  
    65.       </if>  
    66.       <if test="sex != null" >  
    67.         sex,  
    68.       </if>  
    69.       <if test="birthday != null" >  
    70.         birthday,  
    71.       </if>  
    72.       <if test="address != null" >  
    73.         address,  
    74.       </if>  
    75.       <if test="tel != null" >  
    76.         tel,  
    77.       </if>  
    78.       <if test="qq != null" >  
    79.         qq,  
    80.       </if>  
    81.       <if test="image != null" >  
    82.         image,  
    83.       </if>  
    84.       <if test="sfjh != null" >  
    85.         sfjh,  
    86.       </if>  
    87.       <if test="sfzx != null" >  
    88.         sfzx,  
    89.       </if>  
    90.       <if test="sfhf != null" >  
    91.         sfhf,  
    92.       </if>  
    93.       <if test="sfpl != null" >  
    94.         sfpl,  
    95.       </if>  
    96.       <if test="sffx != null" >  
    97.         sffx,  
    98.       </if>  
    99.     </trim>  
    100.     <trim prefix="values (" suffix=")" suffixOverrides="," >  
    101.       <if test="id != null" >  
    102.         #{id,jdbcType=VARCHAR},  
    103.       </if>  
    104.       <if test="username != null" >  
    105.         #{username,jdbcType=VARCHAR},  
    106.       </if>  
    107.       <if test="password != null" >  
    108.         #{password,jdbcType=VARCHAR},  
    109.       </if>  
    110.       <if test="email != null" >  
    111.         #{email,jdbcType=VARCHAR},  
    112.       </if>  
    113.       <if test="name != null" >  
    114.         #{name,jdbcType=VARCHAR},  
    115.       </if>  
    116.       <if test="sex != null" >  
    117.         #{sex,jdbcType=VARCHAR},  
    118.       </if>  
    119.       <if test="birthday != null" >  
    120.         #{birthday,jdbcType=VARCHAR},  
    121.       </if>  
    122.       <if test="address != null" >  
    123.         #{address,jdbcType=VARCHAR},  
    124.       </if>  
    125.       <if test="tel != null" >  
    126.         #{tel,jdbcType=VARCHAR},  
    127.       </if>  
    128.       <if test="qq != null" >  
    129.         #{qq,jdbcType=VARCHAR},  
    130.       </if>  
    131.       <if test="image != null" >  
    132.         #{image,jdbcType=VARCHAR},  
    133.       </if>  
    134.       <if test="sfjh != null" >  
    135.         #{sfjh,jdbcType=VARCHAR},  
    136.       </if>  
    137.       <if test="sfzx != null" >  
    138.         #{sfzx,jdbcType=VARCHAR},  
    139.       </if>  
    140.       <if test="sfhf != null" >  
    141.         #{sfhf,jdbcType=VARCHAR},  
    142.       </if>  
    143.       <if test="sfpl != null" >  
    144.         #{sfpl,jdbcType=VARCHAR},  
    145.       </if>  
    146.       <if test="sffx != null" >  
    147.         #{sffx,jdbcType=VARCHAR},  
    148.       </if>  
    149.     </trim>  
    150.   </insert>  
    151.   <update id="updateByPrimaryKeySelective" parameterType="test.model.UserDto" >  
    152.     update user  
    153.     <set >  
    154.       <if test="username != null" >  
    155.         username = #{username,jdbcType=VARCHAR},  
    156.       </if>  
    157.       <if test="password != null" >  
    158.         password = #{password,jdbcType=VARCHAR},  
    159.       </if>  
    160.       <if test="email != null" >  
    161.         email = #{email,jdbcType=VARCHAR},  
    162.       </if>  
    163.       <if test="name != null" >  
    164.         name = #{name,jdbcType=VARCHAR},  
    165.       </if>  
    166.       <if test="sex != null" >  
    167.         sex = #{sex,jdbcType=VARCHAR},  
    168.       </if>  
    169.       <if test="birthday != null" >  
    170.         birthday = #{birthday,jdbcType=VARCHAR},  
    171.       </if>  
    172.       <if test="address != null" >  
    173.         address = #{address,jdbcType=VARCHAR},  
    174.       </if>  
    175.       <if test="tel != null" >  
    176.         tel = #{tel,jdbcType=VARCHAR},  
    177.       </if>  
    178.       <if test="qq != null" >  
    179.         qq = #{qq,jdbcType=VARCHAR},  
    180.       </if>  
    181.       <if test="image != null" >  
    182.         image = #{image,jdbcType=VARCHAR},  
    183.       </if>  
    184.       <if test="sfjh != null" >  
    185.         sfjh = #{sfjh,jdbcType=VARCHAR},  
    186.       </if>  
    187.       <if test="sfzx != null" >  
    188.         sfzx = #{sfzx,jdbcType=VARCHAR},  
    189.       </if>  
    190.       <if test="sfhf != null" >  
    191.         sfhf = #{sfhf,jdbcType=VARCHAR},  
    192.       </if>  
    193.       <if test="sfpl != null" >  
    194.         sfpl = #{sfpl,jdbcType=VARCHAR},  
    195.       </if>  
    196.       <if test="sffx != null" >  
    197.         sffx = #{sffx,jdbcType=VARCHAR},  
    198.       </if>  
    199.     </set>  
    200.     where id = #{id,jdbcType=VARCHAR}  
    201.   </update>  
    202.   <update id="updateByPrimaryKey" parameterType="test.model.UserDto" >  
    203.     update user  
    204.     set username = #{username,jdbcType=VARCHAR},  
    205.       password = #{password,jdbcType=VARCHAR},  
    206.       email = #{email,jdbcType=VARCHAR},  
    207.       name = #{name,jdbcType=VARCHAR},  
    208.       sex = #{sex,jdbcType=VARCHAR},  
    209.       birthday = #{birthday,jdbcType=VARCHAR},  
    210.       address = #{address,jdbcType=VARCHAR},  
    211.       tel = #{tel,jdbcType=VARCHAR},  
    212.       qq = #{qq,jdbcType=VARCHAR},  
    213.       image = #{image,jdbcType=VARCHAR},  
    214.       sfjh = #{sfjh,jdbcType=VARCHAR},  
    215.       sfzx = #{sfzx,jdbcType=VARCHAR},  
    216.       sfhf = #{sfhf,jdbcType=VARCHAR},  
    217.       sfpl = #{sfpl,jdbcType=VARCHAR},  
    218.       sffx = #{sffx,jdbcType=VARCHAR}  
    219.     where id = #{id,jdbcType=VARCHAR}  
    220.   </update>  
    221. </mapper
posted @ 2016-03-16 10:39  ihanliu  阅读(766)  评论(0编辑  收藏  举报