MybatisPlus最新代码生成器(3.5.1+)使用教程(3) |
您所在的位置:网站首页 › 正则表达式生成器使用教程 › MybatisPlus最新代码生成器(3.5.1+)使用教程(3) |
简介
MybatisPlus最新代码生成器(3.5.1+)使用教程(1)——输出路径详细解析 MybatisPlus最新代码生成器(3.5.1+)使用教程(2)——输出文件名详细解析 MybatisPlus最新代码生成器(3.5.1+)使用教程(3)——指定数据库表详细解析 MybatisPlus最新代码生成器(3.5.1+)使用教程(4)——文件模板解析 前两篇教程说明了如何通过 packageConfig 控制输出路径,以及通过 strategyConfig 控制输出文件名,本文将着重说明如何指定数据库表。 com.baomidou.mybatisplus.generator.IDatabaseQuery 是一个抽象类。它的实现类,同时也是它的内部静态类 DefaultDatabaseQuery,重点分析它的 queryTables 方法。 因为该方法就是扫描数据库表,并获取所需表信息的类。 先来看一下 addInclude 的使用方法展示: FastAutoGenerator.create("url", "username", "password") // addInclude 增加包含的表名,可以增加多个 .strategyConfig(builder -> builder.addInclude("ums_administrator")) .execute();接着,再来看 addExclude 的使用方法展示: FastAutoGenerator.create("url", "username", "password") // addExclude 增加排除表,可以增加多个 .strategyConfig(builder -> builder.addExclude("ums_administrator_role_relation")) .execute();首先,总览一下 queryTables() 方法: 其中, String tablesSql = dbQuery.tablesSql(); 根据不同类型的数据库获取不同的基本查询语句,该语句功能就就是查询所有的数据库表; dbQuery.query 的作用,就是执行sql查询语句,并且查询到的每一行结果交给外层的都 Consumer 来处理。(这个类似访问者模式) dbQuery.tableSql() 则是组装查询所有数据库表的sql语句;对象 dbQuery 的类是 com.baomidou.mybatisplus.generator.config.querys.DecoratorDbQuery,它的 tableSql 方法源码如下: 下表反映的是这段代码涉及到的参数: StrategyConfig可调参数 默认值 备注 enableSqlFilter true 启用sql过滤,语法不能支持使用sql过滤表的话,可以考虑关闭此开关. likeTable null 包含表名 notLikeTable null 不包含表名 include 空 指定包含表 exclude 空 指定不包含表 结论1: 当enableSqlFilter设置为true时,likeTable和notLikeTable配置只能二选一;同样,include和exclude配置也只能二选一 结论2: 当enableSqlFilter设置为true时,include和exclude设置成正则表达式无效!下面给出 likeTable 的使用示例,notLikeTable 也类似: FastAutoGenerator.create(properties.getProperty("url"), properties.getProperty("username"), properties.getProperty("password")) .strategyConfig(builder -> builder.likeTable(new LikeTable("user", SqlLike.DEFAULT))) // 等于 %user% .execute();new LikeTable("user", SqlLike.LEFT) // 等于 %user new LikeTable("user", SqlLike.RIGHT) // 等于 user% 继续来看 queryTables() 的源码: 这段代码,稍稍需要理解的就是这个 matchIncludeTable 和 matchExcludeTable 方法了,跟踪到最内层,就是 如果,用户填写的 include 或者 exclude,如果跟数据库表名相同,就匹配上了,就可以把对应的 TableInfo 加入到 includeTableList 或者 excludeTableList 中了。 !!!但是,如果用户填写的 include 或者 exclude 是正则表达式的话,一定要把 enableSqlFilter 设置为 false!然后,如果数据表名和用户设置的正则表达式匹配上,就算是命中了。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |