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>

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

原文地址:https://www.cnblogs.com/borter/p/9569961.html

时间: 2024-10-10 01:56:05

MyBatis学习4---使用MyBatis_Generator生成Dto、Dao、Mapping的相关文章

mybatis generator.xml 配置 自动生成model,dao,mapping

generator.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.

使用MyBatis_Generator生成Dto、Dao、Mapping

转载地址: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) C

通过mybatis工具generatorConfig.xml自动生成实体,DAO,映射文件

简介 Mybatis属于半自动ORM,可以利用mybatis工具generatorConfig.xml自动生成DAO.实体.映射文件的方式来代替手动书写的方式,这样既提高了工作效率也可以在项目避免出现的一些细微难调试的BUG. 前提条件: 1.需要准备的第三方jar包为: mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.39-bin.jar, 其中mybatis-generator-core-1.3.2.jar的下载地址为: h

MyBatis学习---使用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' v

Mybatis学习笔记(二) 之Dao开发

使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法,常用还是Mapper接口开发. SqlSession的使用范围 SqlSession中封装了对数据库的操作,如:查询.插入.更新.删除等.通过SqlSessionFactory创建SqlSession,而SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建. 1.SqlSessionFactoryBuilder

Mybatis学习记录(五)--整合spring开发Dao

mybatis和spring整合,也就是通过spring管理SqlSessionFactory.mapper接口. 一.导入架包 除了spring的包和mybatis的包,还需要导入两者的整合包,目前这个包由mybatis提供 mybatis-spring-1.2.0.jar 二.一些必要的配置文件 1.log4j配置 需要先导入log4j的架包,然后建立log4j.properties # Global logging configuration #在开发环境中要设置为DEBUG,不然不会打印

【MyBatis学习04】mapper代理方法开发dao

上一篇博文总结了mybatis使用 原始dao的方法存在的一些弊端,我们肯定不会去用它,那么mybatis中该如何开发dao呢?如题所述,这篇博文主要来总结一下使用mapper代理的方法来开发dao的步骤. 使用mapper代理的方法来开发dao时,程序员只需要干两件事即可: 需要编写mapper.xml映射文件 需要编写mapper接口(相当于dao接口) 从做的工作来看,使用mybatis中使用mapper代理来开发dao会很方便,完全不需要我们去写具体的实现类,只需要写出接口即可,但是接口

mybatis genertor自动生成Dao+mapping+model

mybatis genertor自动生成Dao+mapping+model   [1]下载: 可参考:https://github.com/mybatis/generator/releases 解压之后的格式: [2]添加文件 打开lib文件 (1)新建generatorConfig..xml文件,内容见下(仅作参考,部分内容需自己修改): <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE gener

【MyBatis学习15】MyBatis的逆向工程生成代码

1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml.mapper.Java.po..).一般在开发中,常用的逆向工程方式是通过数据库的表生成代码. 2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向工程的jar包,我用的是mybatis-generator-core-1.3.2,已经上传到下载频道了(点