自动生成Mapper文件(基于Mybatis Maven插件)
自动生成Mybatis的Mapper文件
工作中使用mybatis时我们需要根据数据表字段创建pojo类、mapper文件以及dao类,并且需要配置它们之间的依赖关系,这样的工作很琐碎和重复,mybatis官方也发现了这个问题,因此给我们提供了mybatis generator工具来帮我们自动创建pojo类、mapper文件以及dao类并且会帮我们配置好它们的依赖关系。
实际上,最非常流行MyBatis-Plus中内置了代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,有超多自定义配置等,在这主要介绍Mybatis的自动生成步骤。
插件依赖
直接在maven的pom.xml文件中复制粘贴即可。
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>6.0.6</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.5</version></dependency></dependencies><configuration><!--允许移动生成的文件 --><verbose>true</verbose><!-- 是否覆盖 --><overwrite>true</overwrite><!-- 自动生成的配置 --><configurationFile>src/main/resources/generatorConfig.xml</configurationFile></configuration></plugin></plugins>
</build>
BUG提醒:mysql-connector-java的版本问题,如果你的驱动是com.mysql.cj.jdbc.Driver,你就需要6.0.x的版本。如果是com.mysql.jdbc.Driver 则是5.1.x的版本。
注意
如果在工作中,你要使用Mybatis的反向工程生成文件,你应该不能在项目pom.xml中引用上图的依赖,那么你可以专门创建一个sringboot工具项目来生成文件,然后在拖动到你工作项目中。其实我们最需要的是Mapper文件中的restMap,如果你的数据库字段有30 40 个之多,手动Mapper文件绝对会让你怀疑人生。
配置generatorConfig.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:name --><!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 --><context id="default" targetRuntime="MyBatis3"><!-- 生成的 Java 文件的编码 --><property name="javaFileEncoding" value="UTF-8"/><!-- optional,旨在创建class时,对注释进行控制 --><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!--jdbc的数据库连接 --><jdbcConnectiondriverClass="com.mysql.cj.jdbc.Driver"connectionURL= 你数据库urluserId= 账号password= 你的密码 ></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类targetPackage 指定生成的model生成所在的包名targetProject 指定在该项目下所在的路径--><!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--><javaModelGenerator targetPackage="com.ke.likehouse.model" targetProject="./src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加 构造函数,如果为true则不会生成ResultMap --><property name="constructorBased" value="false"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --><!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">--><sqlMapGenerator targetPackage="mybatis/mappers" targetProject="./src/main/resources"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口--><!-- targetPackage:mapper接口dao生成的位置 --><!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">--><javaClientGenerator type="XMLMAPPER" targetPackage="com.ke.likehouse.dao" targetProject="./src/main/java"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!--生成的表--><!--domainObjectName:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面;--><!--enableInsert(默认true):指定是否生成insert语句;--><!--enableSelectByPrimaryKey(默认true):指定是否生成按照主键查询对象的语句(就是getById或get);--><!--enableSelectByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询语句;--><!--enableUpdateByPrimaryKey(默认true):指定是否生成按照主键修改对象的语句(即update);--><!--enableDeleteByPrimaryKey(默认true):指定是否生成按照主键删除对象的语句(即delete);--><!--enableDeleteByExample(默认true):MyBatis3Simple为false,指定是否生成动态删除语句;--><!--enableCountByExample(默认true):MyBatis3Simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);--><!--enableUpdateByExample(默认true):MyBatis3Simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);--><table tableName="agent" domainObjectName="Agent"enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="false"></table><!-- geelynote mybatis插件的搭建 --></context>
</generatorConfiguration>
上图的配置文件中包含了几乎所有你可能用到的参数配置并带有注释,最终在IDEA中你看到项目结构应该是这样的:
执行maven命令
IDEA 的右方有MAVEN工具栏
方式一:通过IDEA的MAVEN工具执行
方式二:通过MAVEN命令
配置命令:mybatis-generator:generate -e
然后Run就好了:
run成功后,你会在你配置的项目文件夹下看到生成好的代码,然后基于此再做修改。
可能出现的BUG
如果你复制粘贴了代码却出现稀奇古怪的BUG,很有可能是:
- 你的maven的配置文件问题
- 引用的mysql-connector-java与driverClassName版本不匹配
如果你的驱动是com.mysql.cj.jdbc.Driver,你就需要6.x.x的版本。如果是com.mysql.jdbc.Driver 则是5.x.x的版本。
转载于:https://www.cnblogs.com/keeya/p/11247408.html
自动生成Mapper文件(基于Mybatis Maven插件)相关推荐
- 使用maven工程实现Mybatis自动生成Mapper文件
本文档为学习记录,参考博文: https://www.cnblogs.com/handsomeye/p/6268513.html https://www.cnblogs.com/maanshancss ...
- **Mybatis怎么自动生成Mapper文件和实体类**
Mybatis怎么自动生成Sql Mapper文件和实体类 第一步:在resources包下建立generator.xml文件 generator.xml:文件内容 <?xml version= ...
- mysql 自动生成mapper_Spring Boot整合mybatis并自动生成mapper和实体实例解析
最近一直都在学习Java,发现目前Java招聘中,mybatis出现的频率挺高的,可能是目前Java开发中使用比较多的数据库ORM框架.于是我准备研究下Spring Boot和mybatis的整合. ...
- 基于注解处理器开发自动生成getter和setter方法的插件
昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...
- 5.自动生成summary文件
自动生成Summary文件 gitbook安装参考官方文档: https://toolchain.gitbook.com/setup.html 方案1,julianxhokaxhiu/gitbook- ...
- c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件
1. webpack中的CommonJS和ES Mudule 规范 1.1 CommonJs规范 CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运 ...
- 自动生成PDF文件(Java通过PDF模板自动生成PDF)
思路: 1.创建PDF模板(先创建对应的excel文件,创建好后另存为PDF文件)即可. 2.使用Adobe Acrobat DC工具打开PDF文件,设置自己想要替换的内容. 3.maven项目引入依 ...
- ASFG - AI可以帮你自动生成字幕文件
ASFG - 开发中的字幕文件自动生成系统 这是最新的更新消息,由于个人能力和时间的问题,几次更新后项目的发展和效果仍不能达到预期,请不要对最终效果抱有太大期望并且谨慎尝试源码,一段时间后我会修改该文 ...
- matlab之用m脚本自动生成exe文件
matlab之用m脚本自动生成exe文件 文章目录 matlab之用m脚本自动生成exe文件 0.前言 1.生成exe文件分两种情况 2.生成文件在自己电脑上运行 3.生成文件在其他电脑上运行 0.前 ...
最新文章
- ld-linux-x86-64.so.2+,RedHat6安装Oracle数据库遇到错误 C [ld-linux-x86-64.so.2+0x14d70]
- python期末知识点总结_期末考试必备复习提纲丨9年级数学上册知识点总结归纳(人教版)...
- 控件无法安装,windows已经阻止此软件因为无法验证发行者
- c++备忘录模式mememto
- php边框圆角,css3圆角和圆角边框使用方法总结
- C# 派生类的构造函数
- 【转】2.3【MySQL】运行原理(三)InnoDB 逻辑存储结构
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
- gradle_Gradle
- python自动化上传文件_python接口自动化测试二十三:文件上传
- vsftp启用root用户
- Object-c 学习笔记
- backup exec linux卸载,Symantec Backup Exec 2012 Agent for Linux 卸载
- javascript回调函数有什么用
- Linux 上如何清除 RAM 内存高速缓存,缓存和交换空间
- 计算机组成原理语言方框图,计算机组成原理实验报告3 语言方框图
- OA系统是把无所不能的“万能钥匙”?
- 字节女测试工程师万字总结的软件测试入门技巧
- 汽车外饰360vr实景展示有哪些应用场景?
- 分享155个ASP源码,总有一款适合您