MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping

莫问天涯路几重,轻衫侧帽且从容。这篇文章主要讲述MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping相关的知识,希望能为你提供帮助。
由于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目录中,如图:

MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping

文章图片

其中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="https://www.songbingjia.com/android/true"/>
  11.   < !-- 是否去除自动生成的注释 true:是 : false:否 -->
  12.   < property name="suppressAllComments" value="https://www.songbingjia.com/android/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="https://www.songbingjia.com/android/false"/>
  19.   < /javaTypeResolver>
  20.   < !-- 生成模型的包名和位置-->
  21.   < javaModelGenerator targetPackage="test.model" targetProject="src">
  22.   < property name="enableSubPackages" value="https://www.songbingjia.com/android/true"/>
  23.   < property name="trimStrings" value="https://www.songbingjia.com/android/true"/>
  24.   < /javaModelGenerator>
  25.   < !-- 生成映射文件的包名和位置-->
  26.   < sqlMapGenerator targetPackage="test.mapping" targetProject="src">
  27.   < property name="enableSubPackages" value="https://www.songbingjia.com/android/true"/>
  28.   < /sqlMapGenerator>
  29.   < !-- 生成DAO的包名和位置-->
  30.   < javaClientGenerator type="XMLMAPPER" targetPackage="test.dao" targetProject="src">
  31.   < property name="enableSubPackages" value="https://www.songbingjia.com/android/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”这个目录下,如图:
MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping

文章图片

生成成功后进到src目录下,可以看到已经生成了对应的model、dao、mapping,如图:
【MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping】
MyBatis学习4---使用MyBatis_Generator生成DtoDaoMapping

文章图片

下面可以看看生成后的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类。





















    推荐阅读