概 述

MyBatis Generator (简称 MBG) 是一个用于 MyBatis和 iBATIS的代码生成器。它可以为 MyBatis的所有版本以及 2.2.0之后的 iBATIS版本自动生成 ORM层代码,典型地包括我们日常需要手写的 POJOmapper xml 以及 mapper 接口等。MyBatis Generator 自动生成的 ORM层代码几乎可以应对大部分 CRUD 数据表操作场景,可谓是一个生产力工具啊!

注: 本文首发于 My Personal Blog:CodeSheep·程序羊,欢迎光临 小站


数据库准备与工程搭建

  • 首先我们准备一个 MySQL数据表 user_info用于下文实验

里面插入了若干条数据:

  • 新建一个Spring Boot 工程
  • 引入 MyBatis Generator 依赖
<dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version><scope>provided</scope>
</dependency>
  • 引入 MyBatis Generator Maven 插件
<plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><configuration><configurationFile>src/main/resources/mybatis-generator.xml</configurationFile><overwrite>true</overwrite></configuration><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.12</version></dependency></dependencies>
</plugin>

MyBatis Generator Maven 插件引入以后,我们可以在 Spring Boot工程的 Maven插件工具栏中看到新增的插件选项,类似下图:


准备 MyBatis Generator 配置文件

MyBatis Generator 也需要一个 xml格式的配置文件,该文件的位置配在了上文 引入 MyBatis Generator Maven 插件的 xml配置里,即src/main/resources/mybatis-generator.xml,下面给出本文所使用的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="MySql" defaultModelType="flat">     <plugin type="org.mybatis.generator.plugins.SerializablePlugin" /><jdbcConnectiondriverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://121.196.123.245:3306/demo"userId="root"password="xxxxxx" /><javaModelGenerator targetPackage="cn.codesheep.springbt_mybatis_generator.entity" targetProject="src/main/java"></javaModelGenerator><sqlMapGenerator targetPackage="mapper"  targetProject="src/main/resources"></sqlMapGenerator><javaClientGenerator targetPackage="cn.codesheep.springbt_mybatis_generator.mapper" targetProject="src/main/java" type="XMLMAPPER"></javaClientGenerator><table tableName="user_info"><property name="modelOnly" value="false"/></table></context></generatorConfiguration>

上面 xml中几个关键的配置简介如下:

  • < jdbcConnection /> 数据库连接配置,至关重要
  • <javaModelGenerator /> 指定自动生成的 POJO置于哪个包下
  • <sqlMapGenerator /> 指定自动生成的 mapper.xml置于哪个包下
  • <javaClientGenerator /> 指定自动生成的 DAO接口置于哪个包下
  • <table /> 指定数据表名,可以使用_和%通配符

更多关于 MyBatis Generator 配置的内容,可以移步 官方文档。


运行 MyBatis Generator

直接通过 IDEA的 Maven图形化插件来运行 MyBatis Generator,其自动生成的过程 和 生成的结果如下图所示:

很明显,通过 MyBatis Generator,已经很方便的帮我们自动生成了 POJOmapper xml 以及 mapper接口,接下来我们看看自动生成的代码怎么用!


自动生成的代码如何使用

我们发现通过 MyBatis Generator自动生成的代码中带有一个 Example文件,比如上文中的 UserInfoExample,其实 Example文件对于平时快速开发还是有很大好处的,它能节省很多写 sql语句的时间,举几个实际的例子吧:

  • 单条件模糊搜索 + 排序

在我们的例子中,假如我想通过用户名 user_name来在 MySQL数据表 user_info中进行模糊搜索,并对结果进行排序,此时利用UserInfoExample可以方便快速的实现:

@Autowired
private UserInfoMapper userInfoMapper;public List<UserInfo> searchUserByUserName( String userName ) {UserInfoExample userInfoExample = new UserInfoExample();userInfoExample.createCriteria().andUserNameLike( '%'+ userName +'%' ); // 设置模糊搜索的条件String orderByClause = "user_name DESC";userInfoExample.setOrderByClause( orderByClause );  // 设置通过某个字段排序的条件return userInfoMapper.selectByExample( userInfoExample );
}
  • 多条件精确搜索

再比如,我们想通过电话号码 phone和用户名 user_name 两个字段来在数据表 user_info中实现精确搜索,则可以如下实现:

public List<UserInfo> multiConditionsSearch( UserInfo userInfo ) {UserInfoExample userInfoExample = new UserInfoExample();UserInfoExample.Criteria criteria = userInfoExample.createCriteria();if( !"".equals(userInfo.getPhone()) )criteria.andPhoneEqualTo( userInfo.getPhone() );if( !"".equals(userInfo.getUserName()) )criteria.andUserNameEqualTo( userInfo.getUserName() );return userInfoMapper.selectByExample( userInfoExample );
}

很明显可以看出的是,我们是通过直接编写代码逻辑来取代编写 SQL语句,因此还是十分直观和容易理解的!


后 记

由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!

  • My Personal Blog:CodeSheep 程序羊


Spring Boot项目利用MyBatis Generator进行数据层代码自动生成相关推荐

  1. 利用MyBatis Generator进行数据层代码自动生成

    1. 新建maven工程 导入如下pom: <?xml version="1.0" encoding="UTF-8"?> <project x ...

  2. 数据访问层代码自动生成

    <%-- Name:   数据访问层代码自动生成 Author: 水木 Description: 用来生成三层结构数据访问层代码 --%> <%@ CodeTemplate Lang ...

  3. 使用Mybatis Generator结合Ant脚本快速自动生成Model、Mapper等文件的方法

    新建generatorConfig.xml和build_mybatis.xml: jar下载 <dependency> <groupId>org.mybatis.generat ...

  4. 数据层(DAL)自动生成库

    Data Access Layer Auto Generation Library 源英文文档 <http://www.codeproject.com/KB/aspnet/auto_genera ...

  5. spring boot项目之mybatis注解方式的使用

    一.第一步想引入mybatis包  二.写mapper文件    注: @Results({ @Result(column = "category_id", property = ...

  6. Spring boot 项目目录结构

    Spring boot 项目目录结构 推荐工程结构示例: 代码层的结构 根目录:com.springboot 1.工程启动类(ApplicationServer.java)置于com.springbo ...

  7. Spring Boot实践 | 利用Spring Security快速搞定权限控制

    目录 开始之前 快速开始 使用内存签名服务 使用数据库签名服务 使用自定义签名服务 限制请求 强制使用HTTPS 防止跨站点伪造请求 用户认证功能 在java web工程中,一般使用Servlet过滤 ...

  8. Spring Boot项目微信云托管入门部署

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  9. 利用公网IP访问部署在阿里云服务器的spring boot项目(一)

    一路上真的不知道踩了多少个坑!!!差一点就要放弃了,呜呜,所以来总结一下,也许你也在向阿里云服务器部署项目,那就好好看看,因为究竟是踩到了哪一个坑,很不好说,所以下面这些坑简直非常非常详细,也欢迎大噶 ...

最新文章

  1. KDE社区:首个KDialogue正式开放
  2. st 串口烧写工具 芯片_STM32芯片的几种烧写方式简介
  3. 百度发布全新桌面版机器学习开发环境,12月赠送免费GPU算力
  4. 向工作表中添加列表框或组合框
  5. 20189217 2018-2019-2 《移动平台开发实践》第9周学习总结
  6. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)
  7. printf输出字符串_c语言入门 第十二章 字符串
  8. linq与数据库之添加
  9. python方式下自动登录51cto
  10. Mongoose 参考手册
  11. hbuilder中uniapp运行微信小程序模拟器时出错
  12. 【190227】VC++视频采集程序源代码
  13. vue02(脚手架,部署,helloworld)
  14. web应用集成WPS
  15. ITASCA PFC 2D3D DISCERETE ELEMENT MODELING
  16. Suomi NPP VIIRS夜间灯光遥感数据简介与下载(一)——数据介绍,FTP下载与hdf5读取
  17. Shader——《真三国无双》城墙着火特效
  18. Unity CardboardVR应用在华为部分机型显示黑屏后自动退出
  19. linux dos2unix 批量,linux下dos2unix
  20. 锂电池的最大充电电流和放电电流,你知道怎么看吗?

热门文章

  1. tensorflow inceptionv3参数笔记
  2. 链路聚合(Link Aggregation)与权重
  3. 杨彪 | 一次线上游戏卡死的解决历程(文末赠书福利)
  4. hadoop : hdfs的心跳时间设置及心跳检测算法
  5. 开关电源过流保护-打嗝模式
  6. Hyperic 脚本服务(Script service)配置
  7. 国外17个非常热门的在线备份服务
  8. sql server datetime转char的方法
  9. Catalyst 4000 6000配置经验谈(一)
  10. java策略管理_详解Java编程中的策略模式