java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了

作者 | 阿进的写字台

链接 | www.cnblogs.com/homejim/p/9782403.html

在使用 mybatis 过程中, 当手写 JavaBean和XML 写的越来越多的时候, 就越来越同意出错。这种重复性的工作, 我们当然不希望做那么多。

还好, mybatis 为我们提供了强大的代码生成--MybatisGenerator。

通过简单的配置, 我们就可以生成各种类型的实体类, Mapper接口, MapperXML文件, Example对象等。通过这些生成的文件, 我们就可以方便的进行单表进行增删改查的操作。

Tips:关注微信公众号:Java后端,获取每日推送。

以下的工具使用的都是 IDEA

1.1 创建Maven项目

1.1.1 菜单上选择新建项目

File | New | Project

1.1.2 选择左侧的Maven

17507530d0ddaedbcbbaee6842ec07e2.png

由于我们只是创建一个普通的项目, 此处点击 Next即可。

1.1.3 输入GroupId和ArtifactId

在我的项目中,

GroupId 填 com.homejim.mybatis

ArtifactId 填 mybatis-generator

点击 Next。

1.1.4Finish

通过以上步骤, 一个普通的Maven项目就创建好了。

1.2 配置 generator.xml

其实名字无所谓, 只要跟下面的 pom.xml 文件中的对应上就好了。

/p>

"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >

driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://localhost:3306/mybatis"

userId="root"

password="jim777"/>

targetPackage="com.homejim.mybatis.entity"

targetProject=".\src\main\java">

targetPackage="mybatis/mapper"

targetProject=".\src\main\resources">

targetPackage="com.homejim.mybatis.mapper"

targetProject=".\src\main\java">

需要改一些内容:

1. 本地数据库驱动程序jar包的全路径(必须要改)。

2. 数据库的相关配置(必须要改)

3. 相关表的配置(必须要改)

4. 实体类生成存放的位置。

5. MapperXML 生成文件存放的位置。

6. Mapper 接口存放的位置。

如果不知道怎么改, 请看后面的配置详解。

1.3 配置 pom.xml

在原基础上添加一些内容。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.homejim.mybatis

mybatis-generator

1.0-SNAPSHOT

mybatis-generator

org.mybatis.generator

mybatis-generator-maven-plugin

1.3.7

src/main/resources/generator.xml

true

true

Generate MyBatis Artifacts

generate

org.mybatis.generator

mybatis-generator-core

1.3.7

需要注意的是 configurationFile 中的文件指的是 generator.xml。因此路径写的是该文件的相对路径, 名称也跟该文件相同。

到此, mybatis-generator 就可以使用啦。

1.4 使用及测试

1.4.1 打开 Maven Projects 视图

在 IDEA 上, 打开:

View | Tools | Windwos | Maven Projects

1f2fb41216bd050d0de1e39827e20fc2.png

1.4.2 Maven Projects 中双击 mybatis-generator

在右侧此时可以看到 Maven Projects 了。找到 mybatis-generator 插件。

mybatis-generator | Plugins | mybatis-generator | mybatis-generator

48eda617e3d5ccc39da4df80d05967ca.png

1.4.3 双击运行

运行正确后, 生成代码, 得到如下的结构

e51e2578dd9e5112933d176b2244e603.png

仅仅是上面那么简单的使用还不够爽。那么我们就可以通过更改 generator.xml 配置文件的方式进行生成的配置。

2.1 文档

推荐查看官方的文档。

英文不错的:http://www.mybatis.org/generator/configreference/xmlconfig.html

中文翻译版:http://mbg.cndocs.ml/index.html

2.2 官网没有的

2.2.1 property 标签

该标签在官网中只是说用来指定元素的属性, 至于怎么用没有详细的讲解。

2.2.1.1 分隔符相关

以上的配置对应的是 mysql, 当数据库中的字段和数据库的关键字一样时, 就会使用分隔符。

比如我们的数据列是 delete, 按以上的配置后, 在它出现的地方, 就变成 `delete`。

2.2.1.2 编码

默认是使用当前的系统环境的编码, 可以配置为 GBK 或 UTF-8。

我想项目为 UTF-8, 如果指定生成 GBK, 则自动生成的中文就是乱码。

2.2.1.3 格式化

这些显然都是可以自定义实现的的。

2.2.2 plugins 标签

plugins 标签用来扩展或修改代码生成器生成的代码。

在生成的 XML 中, 是没有  这个标签的。该标签是配置缓存的。

如果我们想生成这个标签, 那么可以 plugins 中进行配置。

334c6e67ae57c03bd29fd2e59e48ba51.png

比如你想生成的 JavaBean 中自行实现 Serializable 接口。

d20d9790fe6c258dd753d3a9481a220f.png

还能自定义插件。

这些插件都蛮有用的, 感觉后续可以专门开一篇文章来讲解。

看名称, 就知道是用来生成注释用的。

默认配置:

suppressAllComments: 阻止生成注释, 默认值是false。

suppressDate: 阻止生成的注释包含时间戳, 默认为false。

addRemarkComments: 注释中添加数据库的注释, 默认为 false。

还有一个就是我们可以通过 type 属性指定我们自定义的注解实现类, 生成我们自己想要的注解。自定义的实现类需要实现 org.mybatis.generator.api.CommentGenerator。

2.2.4 源码

https://github.com/homejim/mybatis-cn

e02607d09ee407c2c3fa23a42c695b44.png

推荐阅读

介绍一款贼美的Vue+Element开源后台管理UI

骚操作:不重启 JVM,如何替换掉已经加载的类?

放弃Spring Boot 中的 RestTemplate,我选择 Retrofit !

腾讯 Git 规范出炉,写给开发者的指南!

最棒 Spring Boot 干货总结(超详细,建议收藏)

我的天,Spring Boot 居然还有 Plus 版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webservice-WebService试题

ylbtech-doc:webservice-WebService试题WebService试题 1.A,返回顶部001.{WebService题目}下列是Web服务体系结构中的角色的是()(选择3项) A)服务提供者 B)服务请求者 C&#…

Session的模拟

Session相关的mock Session相关的mock主要有以下两个步骤: 1) HttpContext对象的实例化 session属于HttpContext对象,所以简单来说,就是我们需要构造一个HttpContext,对象然后在给其中的Session附值。然后再把它指定到…

C++ STL的基本基本原理

STL都是在内存的堆区分配的,但是其析构也是STL帮我们做好的,不用手动去delete。 1.vector 逻辑地址连续的一片内存空间,当空间不足,重新申请新的地址空间,将原有的数据复制过去,而新的地址空间的大小C没有规…

iOS 修改项目名称

2019独角兽企业重金招聘Python工程师标准>>> 1. [代码]iOS 修改项目名称 1 2. [图片] 1.png 3. [图片] 2.png 4. [图片] 3.png 5. [图片] 4.png 6. [图片] 5.png 转载于:https://my.oschina.net/5951008876/blog/681857

java wait源码_Java精通并发-透过openjdk源码分析wait与notify方法的本地实现

上一次https://www.cnblogs.com/webor2006/p/11442551.html中通过openjdk从c的底层来审视了ObjectMonitor的底层实现,这次继续来探究底层,对于wait()和notify()的底层细节到底是啥样的呢?下面还是先来到openjdk中来打开ObjectMonitor.hpp&…

listActivity和ExpandableListActivity的简单用法

今天自己简单的总结了listActivity和ExpandableListActivity二者的简单用法。 首先,先说一下listActivity的用法: ListActivity是一个绑定到一个数据源,并且用来显示这一串数据的Activity。ListActivity拥有一个listview对象来实现数据源的绑…

搭建git for windows服务器(100%可以成功)【转】

转自:http://blog.csdn.net/code_style/article/details/38764203 既然Git在linux下面非常好用,为什么还要搭建git windows的服务器,因为不是所有的用户都需要在linux下面做开发,对吧,还有很多用户选择使用windows做开…

【转】高性能WEB开发系列之重绘与回流

原文转载:http://www.cnblogs.com/wangzhichao/archive/2011/05/16/2047633.html页面呈现流程 在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的…

[数据结构与算法] 单链表的简单demo

Vc6之下编译通过。。 1 /*******************************************************2 * : Project: 单链表数据结构演示3 * : File: link_list.h4 * : Function: 提供单链表操作的数据结构定义及方法声明5 * : History: 2013-10-01 22:37:056 * : Auth…

c++ 17介绍

作者:hearts zh链接:https://www.zhihu.com/question/32222337/answer/55238928来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。其实现在的proposal很多很多,不出意外也会有相当一部分…

“高考”机器人横空出世 2017年居然要考“大学”

文/辛东方,80后作家、专栏作者、专注互联网科技领域人工智能的发展,科学技术的全力配合,已经把人类的智慧实实在在的体现到了智能化设备上。按照目前的发展速度,人工智能要想真正突破技术难关,达到进一步的智能化&…

谁说菜鸟不会数据分析--数据分析那些事儿

一、数据分析是“神马” 1、 何谓数据分析 简单来说,数据分析就是对数据进行分析,较为专业的说法,数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总、理解并消化,以求最大化地开发数据的功…

优集品 php,从细节处着眼 优集品打造成人世界的儿童节

在各大电商企业仍旧在史上最大规模的价格战中拼的不可开交之时,重视用户体验度,以商品传递生活理念而知名的全球优选设计百货--LivePort优集品(http://www.liveport.cn/),已然细心的为眼下即将来临的六一儿童节策划了一餐盛宴,为追…

java中ssm付款代码,ssm实现支付宝支付功能(图文详解)

目录1、支付宝沙箱环境测试2、支付宝整合到ssm环境3、微信支付整合到ssm环境一、支付宝测试环境代码测试1.下载电脑网站的官方demo:2.下载解压导入eclipsereadme.txt请好好看一下。只有一个Java配置类,其余都是JSP。3.配置AlipayConfig(1).注册蚂蚁金服开…

获取android手机的屏幕分辨率 android开发

2019独角兽企业重金招聘Python工程师标准>>> /** * 获取屏幕分辨率 */ private void getResolution() { // TODO Auto-generated method stub Display display getWindowManager().getDefaultDisplay(); DisplayMetrics displayMetrics new DisplayMetrics(); dis…

Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html

Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html 本文介绍了Python对于线程的支持,包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意:本文基于Python2.4完成&#xff0c…

有的日期输入框,可直接调用javascripts

转载于:https://www.cnblogs.com/rf-bear/p/5549126.html

TigerDLNA for ios 集成Tlplayer

好久没有写博客了,这次带着TigerDLNA for ios 跟大家见面 什么都不说先上图 1.优点 优点由于libTigerDLNA使用uiview封装,所以大家可以很方便的集成到自己的项目中。由于集成了tlplayer当然也可以只是作为一个播放器来使用,支持各种网络协议。…

Android——Fragment实例精讲——底部导航栏+ViewPager滑动切换页面

说明: 实现效果: 1- 用ViewPager实现Fragmen之间的切换 2- 底部用RadioGroup实现,更方便的实现图片和字体颜色的改变,更方便的通过RadioButton的点击事件来控制页面切换 原文地址:http://www.runoob.com/w3cnote/andro…

springmvc错误 Spring3.X jdk8 java.lang.IllegalArgumentException

最近在学习springmvc--碰到一个特别蛋疼的错误 javax.servlet.ServletException: Servlet.init() for servlet springMVC threw exceptionorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)org.apache.catalina.valves.ErrorReportValv…