使用MyBatis_Generator工具jar包自动化生成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类。
使用MyBatis_Generator工具jar包自动化生成Dto、Dao、Mapping 文件的更多相关文章
- 可运行jar包生成步骤和jar包的生成
一.可运行jar包生成步骤 1.进入.class文件所在目录,新建一个记事本文件,假设为1.txt,文件内容: 1> Main-Class:可运行类的名字 ( 例如:Main-Class:T ...
- .bat文件和Jar包的生成及运行
.bat文件和Jar包的生成及运行 1.Jar包简单介绍 Jar包是Java中所特有的一种压缩文档,有点类似于zip包,区别在于Jar包中有一个META-INF\MANIFEST.MF文件(在生成Ja ...
- jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder
jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder 1,下载工具地址:www.idesksoft.com/classfinder.html,如图: 2 ...
- jar包的生成及运行
Hello, 大家好,我们见面了,今天是2015年7月30日,我在青岛,你好吗? 这里总结下刚学习到的jar包的生成和运行,网上的资料一搜一大片,我这里总结下适用的 一:jar包的生成: 1:命令行, ...
- Mamen所需要的jar包怎么生成
Mamen所需要的jar包怎么生成 使用 mamen 难免碰到,不知道的 jar 包,不知道怎么在 pom 文件中写,分享一个网址,可以把你想要的 jar 包生成 pom 配置文件,个人感觉非常好用. ...
- Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示
Eclipse中的工程引入jar包后没有整合到一个文件夹而是全部在根目录下显示 解决方案: 1,在Eclipse中,点击window-->Preferences-->Java-->B ...
- 22.访问jar包下资源路径里的文件
访问jar包下资源路径里的文件 因为打包路径和你构建的代码路径是有差异的,想要查看真实的路径情况,可以查看编译后的classes目录下的文件结构. 想要获取资源文件流: private InputSt ...
- Java IDEA根据database以及脚本代码自动生成DO,DAO,SqlMapper文件(一)
根据数据库代码自动生成的插件挺多的,这里主要分享两种: 1.根据database以及脚本代码自动生成 2.根据mybatis-generator-core自动生成(下一章节进行分享,包含sqlserv ...
- java 的复用工具 - jar包
前言 Java提供了jar包的机制,使得已经开发好了的类能够顺利的被将来的工程所复用. 本章主要讲解如何使用这种工具. 包的作用 包能够将不同功用的类组织起来,从而确保类名的唯一性. 为了保证包名的唯 ...
随机推荐
- grid 布局 等比例
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- iOS 程序进入后台,包含用户上拉快捷菜单导致程序失去活跃的研究
今日在使用某App时候,突然发现上拉菜单.程序视频扔在播放,咦!引起了我的兴趣. 首先,列出两个方法, 第一个方法是AppDelegate的代理.当程序进入后台时候调用 - (void)applica ...
- 在Gridview中输入小数时报对于int32 太大或太小
使用Datagridview绑定Access数据库,对于数字类型的数据输入小数后报以下错误: 根据错误判断应该是自动检测该栏位应该输入int32类型的数值.我在数据库中定义了保留4位小数,为什么还被转 ...
- ios 中尝试多次请求
-(void)tryRun { tryTimes++; id obj = [ASODataManager getAppleAccount]; if (obj) { __block FirstViewC ...
- MySQL学习总结(四)数据的基本操作以及MySQL运算符和常用函数
数据库是存储数据库对象的仓库,数据库的基本对象是表,表用来存储数据.关于数据的操作也就是我们常说的CRUD,C指的是CREATE(插入数据记录).R指的是READ(查询数据记录).U指的是UPDATE ...
- 141. Sqrt(x) 【easy】
141. Sqrt(x) [easy] Implement int sqrt(int x). Compute and return the square root of x. Example sqrt ...
- CentOS设置sendmail发件人,让sendmail不显示通过XXX代发
0.有一个十分快速的方法 命令:hostname itzhanzhang.com,但是重启后会失效,于是请接着往下看一劳永逸的方法: 1.设置你的主机名 默认的主机名是类似于“VM_24_76_cen ...
- TPM概述
TPM(Trusted Platform Module)安全芯片,是指符合TPM(可信赖平台模块)标准的安全芯片.标准由TCG(可信赖计算组织,Trusted Computing Group)提出,目 ...
- Ecshop提示Only variables should be passed by reference in错误
Ecshop是个坑爹货,为什么tiandi会说它是个坑爹货呢,请看一下下面的官方的运行环境推荐: 服务器端运行环境推荐·php版本5.0以上5.3以下的版本(推荐使用5.2系列版本)·Mysql版本5 ...
- plsql programming 10 日期和时间戳
年 月 日 时 分 秒 时区 用小时表示的相对于 UTC 的时差 用分钟表示的相对于 UTC 的时差 date 存储日期和时间, 不带时区, 精确到秒 timestamp 存储日期和时间, 不带时区, ...