MySQLMyBatis 操作说明
1 . 准备工作
1-1. 使用 , 导出文件     [ 推 荐 ]

1-1-1

打开Navicat , 选择打算要导出的数据库表.
点击鼠标右键 , 选择【转储SQL文件】 ->
【仅结构】.

1-1-2

在弹框中 , 给.sql文件取名后(也可以是默认名) ,
保存在本地的某个目录下.
准备工作完成.
1-2. 使用 , 导出文件

1-2-1

打开PowerDesigner , 并创建数据库表.
请注意 , 给每个字段加上中文注释.
如图 , 选择【Database】 ->
Generate Database...

1-2-2

在弹框的【Directory】栏目中 ,
选择sql文件存放的目录路径 .
在【File name】栏目中 ,
填写sql文件名.
请注意 , 文件后缀必须是.sql.
准备工作完成.
2 . 生成代码操作流程
2-1. 模拟场景描述

2-1

  说明 : 上图中
【图标1】Java实体
【图标2】MyBatis映射接口类
【图标3】MyBatisXml文件
【图标4】生成测试数据工具类
  模拟场景 :
    用户A希望 , 根据刚刚导出的数据库表sql文件 , 生成相应的Java实体和MyBatis映射类及xml文件(如
上图). 当然还需要 , 能生成测试数据的工具类.
    具体如下: (支持任何类型的JAVA工程)  用户A想根据数据库表sql文件 ,
在工程中的com/beans目录下生成Java实体;
com/mapper目录下生成MyBatis映射接口类;
com/sql目录下生成MyBatisxml文件.
具体该如何操作呢? 其实很简单 , 只需要1分钟就可以实现这一切! 将在下一节中 , 介绍最简单的操作方式.
2-2. 实际操作过程 (入门级) (最简单的模式)

2-2-1

打开www.fwjava.com的首页 ,
点击【我要生成代码!】.

2-2-2

在左侧菜单中点击【正式生成】.
在显示的页面中 , 点击【开饭啦】或【Enter键】.

2-2-3    [类型选择]

从这一步开始 , 便是正式生成代码的流程步骤.
在本页面中 , 主要选择数据库类型、ORM框架类型和测试数据工具类.

2-2-4    [类型选择]

根据模拟场景中的需求 , 选择MySQL和MyBatis.示例工程的编码格式是UTF-8 , 所以选择UTF-8 , 并在[文件获取方式]中选择[直接获取]. 如果选择[发送给别人] , 便在下面的输入框中填写对方的邮箱地址即可(仅支持1个邮件).
如果需要生成[测试数据工具类]的话 , 可以在
[1-2]中选择[是] , 默认是[否].
点击【下一步】或【Enter键】.

2-2-5    [属性设置]

在[属性设置]页面中 , 有5大板块. 其中 ,
[2-1]和[2-2]是关于设置Java实体属性的板块;
[2-3]和[2-4]是关于设置MyBatis的xml文件属性板块;
[2-5]是关于设置MyBatis映射类的属性板块;
[2-1][2-3][2-5]是必填板块.
点击右侧的【收展】 , 可展开页面.

2-2-6    [属性设置]

最简单的情况下 , 在[属性设置]中只需填写3项即可.
根据模拟场景中的示例 , 需要把生成的Java实体 , 放在工程中的com/beans目录下.
因此 , 在[2-1][文件目录]中填写com/beans.

2-2-7    [属性设置]

根据模拟场景中的示例 , 需要把生成的MyBatis的xml文件 , 放在工程中的com/sql目录下.
因此 , 在[2-3][文件目录]中填写com/sql.

2-2-8    [属性设置]

根据模拟场景中的示例 , 需要把生成的MyBatis的映射类, 放在工程中的com/mapper目录下.
因此 , 在[2-5][文件目录]中填写com/mapper.
点击【下一步】或【Enter键】.

2-2-9    [文件上传]

[文件上传]页面的主要功能是 , 上传数据库表的sql文件 , 即[准备工作]中导出来的sql文件.
最多能上传3个sql文件.
点击【上传本地.sql文件】.

2-2-10    [文件上传]

在弹框页面中 , 点击左侧的【选择文件...】.

2-2-11    [文件上传]

选择 , 在[准备工作]中 , 已经导出的数据库表sql文件.

2-2-12    [文件上传]

选完文件后 , 点击【全部上传】或【Enter键】.

2-2-13    [文件上传]

如果上传错了文件 , 那么可以在页面点击[删除]
点击【下一步】或【Enter键】.

2-2-14    [预 览]

[预 览]页面主要是用来再一次确定 , 在[类型选择]和[属性设置]页面中选择的各类需求选项的.

2-2-15    [预 览]

如果需要更改某些选项 ,则可以点击[上一步].
若符合要求 ,则点击【下一步】或【Enter键】.

2-2-16    [完 成]

到这一步 , 已经成功完成代码生成工作了.
如何把生成的代码下载到本地呢?
点击[fwjava.com](xxxxxxxxxxxxxx).zip压缩包.
注解: [fwjava.com](订单号).zip

2-2-17    [完 成]

把代码压缩包下载到本地硬盘中.

2-2-18

选择代码压缩包 , 右键选择[解压到当前文件夹].
解压缩后目录 , 如图标2.
点击进入 , 解压缩后的目录.

2-2-19

最终生成的代码包, 分为4个目录. 其分别为 ,
【1) JavaBean目录】中是Java实体.
【2) MybatisMapper目录】中是Mybatis的
      映射接口类.
【3) MybatisSql目录】中是Mybatis的xml文件.
【4) 生成测试数据目录】中是测试数据工具类.

2-2-20

点击进入代码包的各目录后 , 拷贝到工程中 ,
其对应关系如下:
【1) JavaBean目录】对应[图标1].
【2) MybatisMapper目录】对应[图标2].
【3) MybatisSql目录】对应[图标3].
【4) 生成测试数据目录】对应[图标4].

2-2-21

每次生成代码时 , 选择相同的属性还是比较繁琐的. 为方便用户使用 , 在[类型选择]页面中 , 点击左图标1的输入框 , 便会出现上几次使用过的属性.
选择如图标2的属性 , 则会自动设置上一次的属性 , 不必重复选择了.
3 . 高级功能
3-1. 简 介
高级功能的设置工作 , 主要集中在[属性设置]
页面中.
3-2. 设置文件后缀

( 需求示例 )

用户A有如下的需求:
( a )  给所有Java实体 , 加上统一的Domain后缀;
( b )  给所有MyBatis的xml文件 , 加上统一的Sql
        后缀;
( c )  给所有MyBatis的映射接口类 , 加上统一的
        Dao后缀;

( a )

在[属性设置]页面中 , 找到[2-1]板块的
[实体类后缀]栏目 , 填写Domain .

( b )

在[属性设置]页面中 , 找到[2-3]板块的
[文件后缀]栏目 , 填写Sql .

( c )

在[属性设置]页面中 , 找到[2-5]板块的
[文件后缀]栏目 , 填写Dao .
3-3. 设置类的继承及接口关系

[ Java实体 ]

 
 
 

( 需求描述 )

用户A有如下的需求:
因为项目中 , 已有统一封装的自定义框架 ,
要求 , 新生成的所有Java实体 ,
必须继承com.common.BaseDomain类 ,
并实现com.common.ICommonDomain接口. 归纳为 , 给所有Java实体:
( a )  继承(extends)
        com.common.BaseDomain类;
( b )  实现接口(implements)
        com.common.ICommonDomain接口类;

( 操 作 )

在[属性设置]页面中 , 找到[2-1]板块的
[extends类]栏目 ,
填写com.common.BaseDomain(图标1);
然后 ,点击[再加接口类] (图标2);
在[implements类]栏目中 ,
填写com.common.ICommonDomain(图标3);

[ MyBatis映射接口类 ]

( 需求描述 )

用户A有如下的需求:
因为项目中 , 已有统一封装的自定义框架 ,
必须要求 , 新生成的所有MyBatis映射接口类 ,
继承com.common.ICommonMapper接口 ,

( 操 作 )

在[属性设置]页面中 , 找到[2-5]板块的
[extends类]栏目 ,
填写com.common.ICommonMapper(图标2);
3-4. 选择SQL方法

( 需求描述 )

通常在MyBatis的xml文件中 , 会自动生成14种SQL方法.
在实际应用中 , 用户可以根据自身需要 , 选择其中的n种SQL方法使用.
 
 

( 操 作 )

在[属性设置]页面中 , 找到[2-4]板块 ,
并点击[收 展].
在14种SQL方法中 , 可以任意的选择.
默认情况下 , 是全部选中的.
 
强烈推荐 : getUpdateBy()
// 按条件变更一条数据的n个字段值.
此方法特别实用 , 可以根据主键ID , 变更n个字段值 , 而不会覆盖无关字段.
3-5. 设置模糊查询、日期处理、浮点类型、数据类型

[ 模糊查询 ]

( 操 作 )

在[属性设置]页面中 , 找到[2-2]板块的
[字符串类型]栏目 ,
有4对属性可进行是/否选择.

( 示 例 )

  以模糊查询为示例 , 假设Java实体中有一个字段叫userName.
  如果对模糊查询属性选择了[是] , 那么将在Java实体中 , 会自动生成userNameLike字段(图标1) , Like为关键字.并在MyBatis的SQL文件中 , 也会自动生成与userNameLike字段相关的SQL语句.
  页面调用时 , 直接使用userNameLike即可实现模糊查询功能 , 无需手写任何代码.

[ 日期处理 ]

( 操 作 )

在[属性设置]页面中 , 找到[2-2]板块的
[日期类型]栏目 ,
有2对属性可进行是/否选择.

( 日期格式化 )( 场 景 )

假设有个Date类型字段叫created(创建日期) , 在
页面不仅以查询条件存在(图标1) , 且在查询结果
中也有显示要求(图标2).
关键字: Char
(如: createdChar , 2010-06-19)
关键字: CharAll
(如: createdCharAll , 2010-06-19 15:18:40)

( 日期格式化 )( 示 例 )

上述需求 , 只需在页面的查询条件字段中
把created字段改成createdChar , 并在查询结果
字段中把created字段改成createdCharAll即可.
无需手写任何代码.
原因是 , 在Java实体中已经生成了Char、CharAll
相关的set和get方法了.
很实用 , 很方便 , 请试一下.

( 日期范围 )( 场 景 )

假设有个Date类型字段叫updated(完成日期) ,
在页面的查询条件中已范围的形式存在
(如:图标1 ,图标2).
关键字: Begin
(如: updatedBegin , 起始日期)
关键字: End
(如: updatedEnd , 结束日期)

( 日期范围 )( 示 例 )

上述需求 , 只需在页面的查询条件字段中
把起始日期字段写成updatedBegin ,
结束日期字段写成updatedEnd即可.
无需手写任何代码.
原因是 , 在Java实体和SQL文件中已经生成了 , 与Begin、End相关的方法了.
很实用 , 很方便 , 请试一下.

[ 浮点类型 ]

( 操 作 )

在[属性设置]页面中 , 找到[2-2]板块的
[浮点类型]栏目 ,
有2对属性可进行是/否选择.

( 示 例 )

在实际应用中 , 常常需要处理有关价格、金额等
数据.为了方便处理浮点类型 , 提供把数据库表中
Double、Float类型自动转化成BigDecimal的功能.
很实用 , 很方便 , 请试一下.

[ 数据类型 ]

( 操 作 )

在[属性设置]页面中 , 找到[2-2]板块的
[数据类型]栏目 ,
有2对属性可进行是/否选择.
如果选择[基本类型]的话 ,那么可以在
[初始值设置]栏目中 , 设置恰当的初始值.

( 示 例 )

对象类型 , 在Java实体中会生成 :
Long、Integer、Double、Float
基本类型 , 在Java实体中会生成 :
long、int、double、float
 
很实用 , 很方便 , 请试一下.
4 . 代码调用、常用功能
4-1. 多条件查询、排序

[ 多条件查询 ]

以自动生成的getList()方法为例 ,
SQL语句中 , 将自动生成所有字段的多条件查询.
 
 
 
 

[ 常用自定义字段 ]

以自动生成的getList()方法为例 ,
SQL语句中 , 将自动生成(常用自定义字段)区域.
在此区域中 , 有如下的字段处理 :
-------------- String类型 --------------
[模糊查询] , 关键字 : Like
[前模糊查询] , 关键字 : Before
[后模糊查询] , 关键字 : After
-------------- Date类型 --------------
[日期查询] , 关键字 : Char
[范围查询 - 起始日期] , 关键字 : Begin
[范围查询 - 结束日期] , 关键字 : End

[ 排 序 ]

以自动生成的getList()方法为例 ,
SQL语句中 , 将自动生成排序字段.
关键字 : orderBy
图标2 , 为在Java代码中实际调用的示例.
有了排序字段 , 就无需为排序功能
而改写SQL语句了.
很实用 , 很方便 , 请试一下.
4-2. 分页查询

[ 分页查询 ]

关于分页查询 , SQL文件中将自动生成2个重要的
方法:getCheckBy()和getPageList().
 
getCheckBy()  // 获取总数据量的方法
getPageList()  // 分页方法

[ 调用示例 ]

图标1 , 调用getCheckBy()方法 , 获取总数据量.
图标2 , 封装分页参数 (Map中的Key是小写).
            bean : 页面参数实体
            offset : 从第几行开始查询
            rows : 查询几条数据
图标3 , 调用getPageList()方法 , 实现分页查询.
4-3. 日期格式化、日期范围、日期比较处理
4-4. 批量处理 : 批量新增、批量更新、批量删除

[ 批量新增 ]

批量新增方法 : getInsertBatch()
入参方式 : List<Java实体>类型
详见 , 请点击左图.

[ 批量更新 ]

批量更新方法 : getUpdateBatch()
入参方式 : List<Java实体>类型
详见 , 请点击左图.

[ 批量删除 ]

批量删除方法 : getDeleteIn()
入参方式 : 数组类型
详见 , 请点击左图.
4-5. Html标签
 

[ Java实体结构介绍 ]

宏观上如左图 , Java实体结构分为a区和b区.
a区 : (实体类内部)
图标1 , 字段属性区
图标2 , 常用自定义字段区
图标3 , 应用小方法区
b区 : (实体类外部 - copy区)
图标4 , Java属性Set/Get方法拷贝区
图标5 , HTML标签区
HTML标签在Java实体的图标5位置上.

[ HTML标签 ] - [ 属性区 ]

如图标2 , input标签的属性值 , 特点如下 :
name="字段属性" (如: userName)
maxlength="字段长度" (如: 32)
详见 , 请点击左图.

[ HTML标签 ] - [ 表名 + 属性区 ]

如图标2 , input标签的属性值 , 特点如下 :
name="表名.字段属性"
             (如: tabDemo.userName)
maxlength="字段长度" (如: 32)
详见 , 请点击左图.

[ HTML标签 ] - [ ID + 属性区 ]

如图标2 , input标签的属性值 , 特点如下 :
id="生成ID" (如: TD_USER_NAME)
name="字段属性" (如: userName)
maxlength="字段长度" (如: 32)
详见 , 请点击左图.

[ HTML标签 ] - [ ID + 表名 + 属性区 ]

如图标2 , input标签的属性值 , 特点如下 :
id="生成ID" (如: TD_USER_NAME)
name="表名.字段属性"
             (如: tabDemo.userName)
maxlength="字段长度" (如: 32)
详见 , 请点击左图.
4-6. 十分常用的Java代码拷贝 [推荐]
 
 

[ Java实体结构介绍 ]

宏观上如左图 , Java实体结构分为a区和b区.
a区 : (实体类内部)
图标1 , 字段属性区
图标2 , 常用自定义字段区
图标3 , 应用小方法区
b区 : (实体类外部 - copy区)
图标4 , Java属性Set/Get方法拷贝区
图标5 , HTML标签区
Java属性Set/Get方法区在Java实体的
图标4位置上.

[ Setter方法 ] copy区

在实际开发时 , 经常会遇到给Java实体
属性设值的场景.
此时 , 可以把图标2区域 , copy到应用中去.
很实用 , 很方便 , 请试一下.

[ Getter方法 ] copy区

在实际开发时 , 经常会遇到获取Java实体
属性值的场景.
此时 , 可以把图标2区域 , copy到应用中去.
很实用 , 很方便 , 请试一下.

[ Getter Setter方法 ] copy区

在实际开发时 , 经常会遇到从一个Java实体中
获取属性值以后 , 再赋值给另一个Java实体的
场景.
此时 , 可以把图标2区域 , copy到应用中去.
很实用 , 很方便 , 请试一下.
5 . 测试数据
5-1. 生成测试数据

[ 目录结构介绍 ]

在代码解压缩包中 , 拷贝4)生成测试数据目录
中的test目录到工程里 (如图标1).
test目录中 , 有4个类.
TestDataGenerator.java类以外的其他3个类
无需理会.

[ 执行方法 ]

打开TestDataGenerator.java类.
在图标2 , 填写本地数据库连接信息.
在图标3 , 填写为每张表生成的测试数据量.
最后 , 执行一下main()方法 ,即可生成测试数据.
很实用 , 很方便 , 请试一下.