zoukankan      html  css  js  c++  java
  • 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:softmybatis-generator-core-1.3.2lib”这个目录下,如图:

    生成成功后进到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>


    接下来就可以将这三个目录拷贝到对应项目的目录中,如果需要新增自己的方法可以修改dao类。

  • 相关阅读:
    设计模式-中介者模式
    设计模式-中介者模式
    设计模式-职责链模式
    设计模式-职责链模式
    设计模式-命令模式
    设计模式-命令模式
    设计模式-桥接模式
    模乘逆元与孙子定理
    网贷野蛮生长加速 超百亿平台频频涌现
    获乐视千万投资 电桩“傍上大款”
  • 原文地址:https://www.cnblogs.com/borter/p/9569961.html
Copyright © 2011-2022 走看看