15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > MyBatis三剑客

MyBatis三剑客

时间:2023-09-10 23:24:01 | 来源:网站运营

时间:2023-09-10 23:24:01 来源:网站运营

MyBatis三剑客:今天在本站上有人提问MyBatis三剑客是什么?于是乎心血来潮写了这篇MyBatis三剑客来跟大家分享一下。

说到三剑客,我想到的是网页三剑客。

百度百科:

网页三剑客,是一套强大的网页编辑工具,最初是由Macromedia公司开发出来的。由Dreamweaver,Fireworks,Flash三个软件组成,俗称网页三剑客。
所谓XXX三剑客,意思就是某三个东西组合起来,会使得一款工具发挥其所未有的威力,最直接体现就是降低开发难度,提高开发效率。而MyBatis的三剑客是MyBatis-generator、MyBatis-plugin、MyBaits-pageHelper。

--generator:用于快速生成xml文件、注释、实体类等等。
--plugin:能快速定位接口对应的sql。
--pageHelper:是一款分页插件。

1. MyBatis-generator

Introduction&QuickStart:http://mybatis.org/generator/

MyBatis-generator是MyBatis官方提供的一款代码生成器。可以生成的SQl语句有:

[1] insert
[2] update by primary key
[3] update by example (using a dynamic where clause)
[4] delete by primary key
[5] delete by example (using a dynamic where clause)
[6] select by primary key
[7] select by example (using a dynamic where clause)
[8] count by example
基本可以满足绝大多数场景下的开发。不足之处就是只能生成单表的代码,如果需要关联多张表,还需要开发者我们对代码进行调整优化。此外开发者也可在generator的基础上进行二次开发,使得逆向一对一、一对多、多对一、多对多成为可能,而不再是幻想。

第一步:添加依赖(选最多人用的)

<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version></dependency>

第二步:添加插件

<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> <!-- mybatis用于生成代码的配置文件 --> <verbose>true</verbose> <overwrite>true</overwrite> </configuration></plugin>

第三步:在resources目录下创建generatorConfig.xml文件

由于篇幅过长,参考博文(写的非常详细):https://www.imooc.com/article/21444

但是其中的table标签配置多余复杂,在此对其进行简化,得出如下基本通用的配置文件(大伙可以参考参考):

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><!-- generator配置 --><generatorConfiguration> <!-- generator需要数据库驱动才能逆向代码因此需要配置一个本地的数据库驱动包 --> <classPathEntry location="C:/software/mysql-connector-java-5.1.6.jar"/> <context id="mysql" targetRuntime="MyBatis3"> <!-- generator默认会将逆向代码追加到已有的xml文件中但我们希望的是重写 --> <plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin"></plugin> <!-- generator默认会对逆向代码添加注释为了代码更加简洁我们希望去掉注释 --> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 配置数据库连接池 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/db_name?serverTimezone=UTC" userId="username" password="password"> </jdbcConnection> <!-- java类型处理器 --> <javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl"> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- model创建器 --> <javaModelGenerator targetPackage="XXX" targetProject="XXX"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成SQL map的XML文件创建器 --> <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- Mapper接口处理器 --> <javaClientGenerator targetPackage="org.cjw.dao" type="XMLMAPPER" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 配置需要逆向的表(一个或者多个) --> <table tableName="table_name" domainObjectName="model_name" enableCountByExample="false" enableDeleteByExample="false" enableSelectByExample="false" enableUpdateByExample="false"/> </context></generatorConfiguration>

第四步:运行mybatis-generator插件

idea右侧maven标签中的Plugins中运行mybatis-generator即可生成相应文件。




2. MyBatis-plugin

MyBatis-plugin是一款插件,可以快速定位接口对应的sql语句位置。在系统日益复杂中,该优势就会愈发突出,非常推荐使用。

安装过程:

点击settings --> Plugins --> Marketplace --> 搜索Free MyBatis plugin --> install --> restart IDE。
安装完成之后,打开mapper文件,会在左侧出现绿色箭头:

点击接口自动定位到接口对应的sql语句,譬如点击insert接口:

而xml文件也有绿色箭头,可以定位到sql对应的接口。

在MyBatis-plugin没有出现的时候,一般都是ctrl+F来定位接口和sql位置,有时候会出现多个匹配选项,需要一一对比,出错率还是挺高的,但是使用MyBatis-plugin既可以大大规避错误的风险。

3. MyBatis-pageHelper

Introduction&QuickStart:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

在开发中,查询出来的数据可能有成千上万条,为了性能,只会展示部分数据给用户查看,另外用户也不可能需要所有的查询数据,因此分页就显得非常有必要了,主流数据库都提供了分页功能,如mysql提供limit语法,而oracle提供rownum字段供开发者对数据进行分页。那么分页插件无非就是对sql进行了封装,对齐添加了对应的分页语句,可以打开插件打印sql功能来一探究竟。

第一步:添加依赖

<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version></dependency>

第二步:设置分页

//[pageNum, pageSize] 页码 每页显示数量PageHelper.startPage(curPage,pageSize);PageInfo<Order> pageInfo = new PageInfo<>(orderMapper.findAll());在需要执行查询之前,这是分页数据(curPage&pageSize)。会返回一个PageInfo对象,包含了分页查询的所以信息数据,如下:

对应到查询页面(基本类同):

分页插件非常顺心,写两行代码,就帮我们搞定了十几个计算变量,大大提高咱们的开发效率呀。

这里分享目前持久层框架的发展前景:

著名开发者Josh Long(龙之春)在2019年在Twitter上发起了一个关注持久层框架的投票。如下

投票结果显示,有57%的人更偏向于JPA,而MyBatis的支持者则只有10%。看到这里是不是心里凉凉,为啥我们在面试的时候,更多的是要会MyBatis,而不是JPA呢?需要注意的是这个投票是在国外进行,而国人参与则需要翻墙。因此这个统计数据只可以说是国外目前的发展趋势,而国内仍有大量的系统在使用MyBatis,在未来几年MyBatis在国内的地位还是稳定的,但是就发展趋势来看,应该需要向过来看齐,就是JPA。

扩展面试:

面试官问你会不会JPA,你说你只会MyBatis,面试官会觉得你对前沿技术、技术发展趋势不敏感,感觉你只是停留在使用层面上。
面试官问你会不会MyBatis,你说你只会JPA,面试官会觉得你对当前国内的形势不了解,甚至会怀疑你的开发经验。
所以本人认为的回答应该是:在过去开发的项目中用的都是MyBatis,但是就我对持久层框架的认识和了解来看,我觉得未来的发展趋势应该是JPA(哔哩吧哩的说一下JPA的好处),就目前spring家族的新生儿子Spring-data-JPA,在不断的茁壮成长,也可以看出点发展方向。
如果觉得有用

可以关注【思与冉】微信公众号,一个不只有诗和远方,还有生活的公众号。

可以关注【思冉】本站创作号,一个不只有诗和远方,还有生活的创作号。

关键词:

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭