• 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
  • 相关阅读:
    android逆向奇技淫巧五:x音fiddler抓包分析协议字段
    windows:3环自行加载PE文件实现进程隐藏
    android逆向奇技淫巧四:模拟器检测和反检测
    android逆向奇技淫巧三:MT管理器替代android killer修改和重新编译smail代码/frida hook 更改so层代码
    windows运算符和数据类型重载反CE查询搜索
    android逆向奇技淫巧二:uiautomatorviewer&method profiling定位x音java层的关键代码和方法
    android逆向奇技淫巧一:去掉开屏广告
    xx课堂m3u8加密视频下载
    Python接口自动化之logging日志
    Python接口自动化之pymysql数据库操作
  • 原文地址:https://www.cnblogs.com/ihanliu/p/5282490.html
Copyright © 2020-2023  润新知