MyBatis 是一个 Java 的 ORM 框架,ORM 的出现就是为了简化开发。最初的开发方式是业务逻辑和数据库查询逻辑是分开的,或者在程序中编写 sql 语句,或者调用 sql 存储过程。这样导致思维需要在语言逻辑和 sql 逻辑之间切换,导致开发效率低下。所以出现了一系列的 ORM 框架,ORM 框架将数据库表和 Java 对象对应起来,当操作数据库时,只需要操作对象的 Java 对象即可,例如设置几个 and 条件,只需要设置几个属性即可。

为什么要有用 MyBatis Generator

虽然说有了 mybatis 框架,但是学习 mybatis 也需要学习成本,尤其是配置它需要的 XML 文件,那也是相当繁琐,而且配置中出现错误,不容易定位。当出现莫名其妙的错误或者有大批量需要生成的对象时,时常会有种生无可恋的感觉在脑中徘徊。故此, MyBatis Generator 应运而生了。

它只需要简单配置,即可完成大量的表到 MyBatis Java 对象的生成工作,不仅速度快,而且不会出错,可让开发人员真正的专注于业务逻辑的开发。

官方提供的 MyBatis Generator 功能比较简单,对于稍微复杂但是开发中必然用到的分页功能、批量插入功能等没有实现,但已经有成熟的插件功能支持。

MyBatis Generator 生成的文件结构

生成的文件包含三类:

  • Model 实体文件,一个数据库表生成一个 Model 实体;
  • ModelExample 文件,此文件和实体文件在同一目录下,主要用于查询条件构造;
  • Mapper 接口文件,数据数操作方法都在此接口中定义;
  • Mapper XML 配置文件;

    在配置文件中配置好文件的生成路径,并设置好对应的包名,即可生成对应的目录结构和文件。我将生成目录设置为 test 目录,实体包名设置为 com.fengzheng.dao.entity ,接口包名设置为 com.fengzheng.dao.mapper ,然后生成的文件目录结构如下图所示:

mybatis 官方提供了 MyBatis Generator ,可以通过 xml 配置文件的方式使用,例如自己写调用脚本,或者使用 mvn 插件的方式,其实实现起来还是很简单的。

毕竟我们懒嘛

虽然简单,但还是不够简单,懒嘛,这不就实现了一个更简单的生成方式,通过 web 页面的方式,填写几个关键的配置参数,选好要生成的数据库表即可。

可配置的参数有如下几个

targetRuntime :MyBatis3、MyBatis3Simple、Ibatis2Java2、Ibatis2Java5,默认为 MyBatis3

是否取消注释:生成的文件中默认会有注释内容,可以选择是否取消。

targetProject(文件生成目录):文件最后保存的目录,选择一个本地磁盘上的目录位置。

实体类包名:实体对象的包名。

mapper.xml文件所在目录:xml 文件所在的目录

mapper接口类包名:mapper 接口类的包名

数据库驱动:目前只支持 mysql

数据库连接字符串、数据库用户、数据库用户密码:数据库相关配置

启动方式

方式1:

直接下载源码,然后运行 BuilderApplication 文件,或者使用 mvn 的 spring-boot:run 方式运行

方式2:

下载 kite-mybatis-builder.jar, 运行命令 java -jar -Dserver.port=[port] kite-mybatis-builder.jar 或者 java -jar kite-mybatis-builder.jar 默认在 9090 端口运行

使用方式

如果运行在默认的 9090 端口,打开浏览器访问 http://localhost:9090 。

  1. 默认打开之后,点击“新建项目”。

  1. 在弹出的项目配置界面,填写上面提到的配置参数

  2. 选择要生成的表,并可在后面配置实体名称,默认规则是各单词首字母大写。

  3. 点击生成按钮,会根据生成结果提示成功或失败。

  4. 生成过的项目会在首页列出来,下次如果还需要生成此数据库的表,可以在之前的项目中重新配置选择即可。

默认已集成了分页

例如:

支持分页查询

例如:

        UserExample userExample = new UserExample();
userExample.setLimit(5);
userExample.setOffset(5);
userExample.setOrderByClause(" id desc ");
List<User> users = userMapper.selectByExample(userExample);

​**欢迎关注我的微信公众号

​ 点此进入 github

让 MyBatis Generator 变的更简单的更多相关文章

  1. spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  2. spring 第一篇(1-1):让java开发变得更简单(下)转

    spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...

  3. [翻译]Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  4. Moq让单元测试变得更简单

    [ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...

  5. Winform 让跨线程访问变得更简单

    Winform 让跨线程访问变得更简单 前言 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出 ...

  6. Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  7. EpiiAdmin 开源的php交互性管理后台框架, 让复杂的交互变得更简单!Phper快速搭建交互性平台的开发框架,基于Thinkphp5.1+Adminlte3.0+Require.js。

    EpiiAdmin EpiiAdmin php开源交互性管理后台框架,基于Thinkphp5.1+Adminlte3.0+Require.js, 让复杂的交互变得更简单!Phper快速搭建交互性平台的 ...

  8. 深入解析 Kubebuilder:让编写 CRD 变得更简单

    作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...

  9. 快开宝PDA开单器出入库扫码:让批发零售变得更简单

    快开宝PDA开单器出现前 批发商户是这样开单和管理的 ★员工痛苦:需要记客户.价格.库存等等,应对报错价.错漏单.盘错货等各种状况. ★老板麻烦:每天要守店.对单.核账,经常因错漏单.库存乱.积压货. ...

随机推荐

  1. myeclipse配置SVN插件

    方法一:link安装  安装subclipse, MyEclipse SVN插件  1.从官网下载最新的site-1.x.x.zip文件,网址是:folderID=2240" target= ...

  2. 掀起Azure AD的盖头来——深入理解Microsoft Graph应用程序和服务权限声明

    作者:陈希章 发表于 2017年7月12日 引子 这是一篇计划外的文章.我们都知道要进行Microsoft Graph的开发的话,需要进行应用程序注册.这个在此前我已经有专门的文章写过了.但这里存在一 ...

  3. (转)Maven依赖的jar包下载不了、jar更新不了的解决办法

    场景一: 使用Maven的同学可能偶尔会遇到这种情况:pom.xml中依赖了项目需要的某个jar文件,但是使用Maven –> update project 还是没办法下载该jar到项目中,你可 ...

  4. 八.利用springAMQP实现异步消息队列的日志管理

    经过前段时间的学习和铺垫,已经对spring amqp有了大概的了解.俗话说学以致用,今天就利用springAMQP来完成一个日志管理模块.大概的需求是这样的:系统中有很多地方需要记录操作日志,比如登 ...

  5. Jenkins in OpenCASCADE

    Jenkins in OpenCASCADE eryar@163.com Abstract. Jenkins是一个开源软件项目,是基于Java开发的一个持续集成工具,用于监控持续复制的工作,旨在提供一 ...

  6. 为什么覆写equals()方法的时候总是要覆写hashcode()?

    要回答这个问题,我们应该先认识一下obj中的equals和hascode方法 1.equals()方法在obj中定义如下: public boolean equals(Object obj) { re ...

  7. 利用aop插入异常日志的2种方式

    AOP是面向切面编程,利用这个技术可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分的耦合性降低,提高代码的可重用性,同时提高开发效率(来自百度百科). Spring AOP有两种实现方式,一 ...

  8. bzoj 4569: [Scoi2016]萌萌哒

    Description 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条 件表示为四个数,l1,r1,l2,r2,即两个长度相同的 ...

  9. 微信JS-SDK使用步骤(以微信扫一扫为例)

    概述: 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用 ...

  10. Python学习(四):模块入门

    1.模块介绍 模块:代码实现的某个功能的集合 模块分类: 自定义模块 内置标准模块 开源模块 模块的常用方法: 是否为主文件:__name__ == '__main__' 如果是直接执行的某程序,那么 ...