您的位置:首页 > 其它

MyBatis generator 的使用

2016-03-06 11:14 477 查看
由于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这个文件的具体内容:

[html] view
plain copy







<?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

[html] view
plain copy







<?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类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: