zoukankan      html  css  js  c++  java
  • MyBatis_Generator生成Dao,Mapper,vo

    原文: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"/>
                <!-- 是否去除自动生成的注释 true:是 : false:否 -->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
            <!--数据库链接URL,用户名、密码 -->
            <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>
            <!-- 生成DAO的包名和位置-->
            <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:softmybatis-generator-core-1.3.2lib”这个目录下,如图:

    生成成功后进到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>
  • 相关阅读:
    航班延误来领钱,信用卡航班延误险最全攻略(2018年版)
    各银行信用卡延误险整理
    酒店web认证802.11x+ROS共享NAT上网
    登机牌,机票,行程单的区别
    ros6.0的包转发图解
    一将成,万骨枯,趣店上市背后的残酷游戏
    异常值检验实战1--风控贷款年龄变量(附python代码)
    outlier异常值检验算法之_箱型图(附python代码)
    sklearn11_函数汇总
    python高级数据可视化Dash2
  • 原文地址:https://www.cnblogs.com/xiamengfei/p/4602794.html
Copyright © 2011-2022 走看看