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‘ 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:\soft\mybatis-generator-core-1.3.2\lib”这个目录下,如图:

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

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

本文转自:http://blog.csdn.net/wyc_cs/article/details/9023117

时间: 2024-12-27 09:15:04

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

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

MyBatis学习13-MyBatis使用mapper代理DAO方法进行开发

1.基本思路 需要编写mapper接口和mapper.xml映射文件.编写mapper接口需要遵循一些开发规范,从而让mybatis可以自动生成mapper接口实现类代理对象. a.在mapper.xml中namespace等于mapper接口地址 b.mapper.java接口中的方法名和mapper.xml中statement的id一致 c.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致 d.mapper.j

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

Maven项目中,使用mybatis,根据数据库自动生成pojo实体类、dao、mapper

一.首先,用eclipse创建一个maven项目. 二.其次,在pom.xml文件下,加入如下插件配置: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.ap

MyBatis学习--mybatis开发dao的方法

简介 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法. 主要概念介绍: MyBatis中进行Dao开发时候有几个重要的类,它们是SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession. SqlSession中封装了对数据库的操作,如:查询.插入.更新.删除等.通过SqlSessionFactory创建SqlSession,而SqlSessionFactory是通过SqlSessionFactoryB

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学习总结(八)——Mybatis3.x与Spring4.x整合(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(八)--Mybatis3.x与Spring4.x整合 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-mybatis3 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 如下图所示: 创建好的项目如下