介绍MyBatis代码生成网站(二) --- 优点介绍

一.简介

网址: http://www.fwjava.com

操作流程: 详见“ 介绍MyBatis代码生成网站(一) --- 基本操作 ”

比较对象: 开源软件mybatis-generator , 和与其类似的衍生开源软件(如mybatis-mapper之类)

二.优点介绍 -- (对比开源软件)

特别适用于追求【 高质量代码 】 的个人开发者、项目组、互联网企业使用.

a) 代码质量方面

开源软件(如:mybatis-generator)生成的代码,总体上比较粗糙: 大多用动态sql、常用的方法少等。

而fwjava.com生成的代码,则比较专业、干净、漂亮: 使用正规的sql语句、基本涵盖所有的常用方法。

代码对比,如下:

开源软件mybatis-generator生成的代码: (如下)

  <resultMap id="BaseResultMap" type="com.model.TabDemo">
    <id column="ID" jdbcType="BIGINT" property="id" />
    <result column="USER_NAME" jdbcType="VARCHAR" property="userName" />
    <result column="ORDER_NO" jdbcType="VARCHAR" property="orderNo" />
    <result column="ORDER_COUNT" jdbcType="INTEGER" property="orderCount" />
    <result column="PRICE_DECIMAL" jdbcType="DECIMAL" property="priceDecimal" />
    <result column="PRICE_DOUBLE" jdbcType="DOUBLE" property="priceDouble" />
    <result column="PRICE_FLOAT" jdbcType="REAL" property="priceFloat" />
    <result column="CREATED" jdbcType="TIMESTAMP" property="created" />
    <result column="UPDATED" jdbcType="TIMESTAMP" property="updated" />
  </resultMap>
  <sql id="Base_Column_List">
    ID, USER_NAME, ORDER_NO, ORDER_COUNT, PRICE_DECIMAL, PRICE_DOUBLE, PRICE_FLOAT, CREATED, 
    UPDATED
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from tab_demo
    where ID = #{id,jdbcType=BIGINT}
  </select>

fwjava.com生成的代码: (如下)

   <!--
    **************************************************************************
    * 5.条件查询
    * 注: 支持多条件查询、模糊查询、日期比较查询等操作.
    **************************************************************************
    -->
    <select id="getList"
            parameterType="com.icsm.paybank.entity.TabDemo"
            resultType="com.icsm.paybank.entity.TabDemo">
    
            SELECT   /* getList+@com.icsm.paybank.sql.TabDemo.xml */ 
                     td.ID                AS "id"              /* 主键ID */ 
                    ,td.USER_NAME         AS "userName"        /* 用户名称 */ 
                    ,td.ORDER_NO          AS "orderNo"         /* 订单号 */ 
                    ,td.ORDER_COUNT       AS "orderCount"      /* 表数目 */ 
                    ,td.PRICE_DECIMAL     AS "priceDecimal"    /* 品类价格 */ 
                    ,td.PRICE_DOUBLE      AS "priceDouble"     /* 类目价格 */ 
                    ,td.PRICE_FLOAT       AS "priceFloat"      /* 商品价格 */ 
                    ,td.CREATED           AS "created"         /* 创建时间 */ 
                    ,td.UPDATED           AS "updated"         /* 变更日期 */ 
              FROM   TAB_DEMO                 td               /* 演示主表 */ 
             WHERE   1 = 1
        
             <if test='id != null'>
               AND   td.ID = #{id} /* 主键ID */ 
             </if>
        
             <if test='userName != null and userName != "" and userName != "null" and userName != "undefined"'>
               AND   td.USER_NAME = #{userName} /* 用户名称 */ 
             </if>
        
             .......

    </select>

 

b) 操作方面

开源软件(如:mybatis-generator) : 需要下载软件到本地后 , 再需要手动编辑配置文件 ,把几十张表一个个填上 , 在利用命令窗CMD输入命令 , 最终生成劣质代码.

而 fwjava.com : 则只需把想要生成的表 , 使用Navicat或PowerDesigner导出sql文件后 , 一键上传即可. 无需下载任何软件、麻烦的手动配置过程、运行命令等繁琐的操作.

c) SQL方法方面

开源软件(如:mybatis-generator) : 单表只能生成3~5小方法 , 而且还不能选择要生成的sql方法种类.

而 fwjava.com : 单表最多能生成26个sql方法 , 并且开发者还可以根据自身需要 , 通过页面选择sql方法种类. 不需要生成的sql方法 , 可以勾去 ,不生成.

d) 常用格式化方面

开源软件(如:mybatis-generator) : 基本没有任何常用字段格式化功能.

而 fwjava.com : 对日期类型格式化、日期比较、日期范围、字符串字段模糊查询、分页查询、批量处理、继承基类等 , 生成精细化的处理代码.

e) 中文注释方面

开源软件(如:mybatis-generator) :  基本没有 ! 就算有 , 也是超难看 , 摆不上台面.

而 fwjava.com : 不仅每个字段都生成中文注释 , 而且还是非常整洁干净的.

f) 常用代码拷贝方面

开源软件(如:mybatis-generator) :  基本没有 !

而 fwjava.com : 在每个整洁的Java实体最下方 , 都有常用代码的拷贝区: 如 每个字段的html标签实体赋值与取值等, 非常实用、方便.

g) 命名方面

开源软件(如:mybatis-generator) :  基本没有 !

而 fwjava.com : 支持统一给Java实体、SQL文件、Mapper接口类设置自定义的后缀.

h) 参数类型方面

开源软件(如:mybatis-generator) :  只有简单的Java实体 !

而 fwjava.com :  对14大类SQL方法 , 不仅支持Java实体类型参数 , 而且还支持HashMap类型参数.


    /**
     * 1.新增一条数据
     * 注: 根据Bean实体执行新增操作.
     * @param tabDemo     - 演示主表
     * @throws Exception  - 异常捕捉
     */
    public void getInsert(TabDemo tabDemo) throws Exception;
    public void getInsertPrmMap(Map<String ,Object> map) throws Exception;


    /**
     * 2.删除一条数据
     * 注: 根据Bean实体的主键ID执行删除操作.
     * @param id          - 主键ID
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getDelete(Long id) throws Exception;


    /**
     * 3.变更一条数据
     * 注: 根据Bean实体的主键ID执行变更操作.
     * @param tabDemo     - 演示主表
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getUpdate(TabDemo tabDemo) throws Exception;
    public int getUpdatePrmMap(Map<String ,Object> map) throws Exception;


    /**
     * 4.获取一个Bean实体
     * 注: 根据Bean实体的主键ID获取一个Bean实体.
     * @param id          - 主键ID
     * @return TabDemo    - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public TabDemo getBean(Long id) throws Exception;
    public Map<String ,Object> getBeanRtnMap(Long id) throws Exception;


    /**
     * 5.条件查询
     * 注: 支持多条件查询、模糊查询、日期比较查询等操作.
     * @param tabDemo         - 演示主表
     * @return List<TabDemo>  - 执行结果
     * @throws Exception      - 异常捕捉
     */
    public List<TabDemo> getList(TabDemo tabDemo) throws Exception;
    public List<TabDemo> getListPrmMapRtnBean(Map<String ,Object> map) throws Exception;
    public List<Map<String ,Object>> getListPrmMapRtnMap(Map<String ,Object> map) throws Exception;


    /**
     * 6.分页查询
     * 注: 支持分页查询、多条件查询、模糊查询、日期比较查询等操作.
     * @param map             - 演示主表及分页信息
     * <br>[参数说明] 如下 , map中有3个固定Key , 且区分大小写.
     * <br>[键1] bean - 演示主表 (实体)
     * <br>[键2] offset - 偏移量 (分页信息)
     * <br>[键3] rows - 数目 (分页信息)
     * @return List<TabDemo>  - 执行结果
     * @throws Exception      - 异常捕捉
     */
    public List<TabDemo> getPageList(Map<String ,Object> map) throws Exception;
    public List<Map<String ,Object>> getPageListRtnMap(Map<String ,Object> map) throws Exception;


    /**
     * 7.删除数据
     * 注: 根据Bean实体的主键ID执行删除操作.
     * @param tabDemo     - 演示主表
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getDeleteBean(TabDemo tabDemo) throws Exception;
    public int getDeleteMap(Map<String ,Object> map) throws Exception;


    /**
     * 8.删除多条数据
     * 注: 根据拼接有限个主键ID执行多条数据的删除操作.
     * @param ids         - 主键ID
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getDeleteIn(Long[] ids) throws Exception;


    /**
     * 9.条件删除数据
     * 注: 根据多种条件执行批量删除操作.
     * @param tabDemo     - 演示主表
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getDeleteBy(TabDemo tabDemo) throws Exception;
    public int getDeleteByPrmMap(Map<String ,Object> map) throws Exception;


    /**
     * 10.验证一条数据是否存在
     * 注: 根据主键ID验证该数据是否存在 ,并返回数据量.
     * @param id          - 主键ID
     * @return int        - 存在数量
     * @throws Exception  - 异常捕捉
     */
    public int getCheck(Long id) throws Exception;


    /**
     * 11.验证多条件数据是否存在
     * 注: 根据多条件验证该数据是否存在 ,并返回数据量.
     * @param tabDemo     - 演示主表
     * @return int        - 存在数量
     * @throws Exception  - 异常捕捉
     */
    public int getCheckBy(TabDemo tabDemo) throws Exception;
    public int getCheckByPrmMap(Map<String ,Object> map) throws Exception;


    /**
     * 12.按条件变更一条数据
     * 注: 根据Bean实体的主键ID,只对部分字段执行变更操作.
     * @param tabDemo     - 演示主表
     * @return int        - 执行结果
     * @throws Exception  - 异常捕捉
     */
    public int getUpdateBy(TabDemo tabDemo) throws Exception;
    public int getUpdateByPrmMap(Map<String ,Object> map) throws Exception;


    /**
     * 13.InsertBatch - 批量新增数据
     * 注: 根据演示主表List对象执行批量新增操作.
     * @param list        - 演示主表List
     * @throws Exception  - 异常捕捉
     */
    public void getInsertBatch(List<TabDemo> list) throws Exception;
    public void getInsertBatchPrmMap(List<Map<String ,Object>> list) throws Exception;


    /**
     * 14.UpdateBatch - 批量更新数据
     * 注: 根据演示主表List对象执行批量更新操作.
     * @param list        - 演示主表List
     * @throws Exception  - 异常捕捉
     */
    public void getUpdateBatch(List<TabDemo> list) throws Exception;
    public void getUpdateBatchPrmMap(List<Map<String ,Object>> list) throws Exception;

 i) ...... (还有很多 , 使用便可知)

 

以上 !

转载于:https://my.oschina.net/fwjava/blog/751661

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值