MBG插件
ylake-mybatis-generator
各方法对应的操作类
batchUpdate BatchUpdateElementGentrator
batchInsert NBatchInsertElementGenerator
deleteByPk DeleteElementByShardGenerator
delete DeleteElementByConditionGenerator
updateByPk UpdateElementByShardGenerator
update UpdateElementByShardGenerator
selectByPk DbFetchOneElementGenerator
selectByPkForUpdate DbFetchOne4UpdateElementGenerator
注释的位置 DmfDaoCommentGenerator.java类的addModelClassComment方法
mapper.xml生成的路径的位置
入口类
maven的入口类
MyBatisGeneratorMojo.java
XML生成逻辑主入口类
SimpleXMLMapperGenerator.java类
JAVA类生成逻辑主入口类
SimpleModelGenerator.java
getCompilationUnits() //类的主要逻辑
getJavaBeansGetter //get方法的主要生成
getJavaBeansSetter //set方法的主要生成
生成的数字类型转换
JavaTypeResolverDefaultImpl.java类的calculateBigDecimalReplacement方法
列是否为自动生成列判断
批量插入的生成关于 自动递增的处理
"列"的处理 BatchInsertColumnsElementGenerator.java
value的处理 ValuesElementForBatchGenerator.java
关于version版本号的处理
AssignmentsElementGenerator.java类 这个是update set 当中的处理
updateByPk
updateByPk的生成类为UpdateElementByShardGenerator.java
assignments的语句的生成类为
AssignmentsEle
deleteByPk
主要的生成类为 DeleteElementByShardGenerator.java
selectByPk
insert
其中 sql id=“columns” 的入口类为ColumnsElementGenerator.java
selectList
conditions对应的生成类为ConditionsElementGenerator.java
插件
<context id="mysqlTable" targetRuntime="MyBatis3Simple">
<!---序列化-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!---生成toString方法-->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
使用插件的问题
生成表时报空指针(pgAdmin删了重建)
int4 int8类型的接收(pgAdmin)
对于PG而言 使用pgAdmin原生的建表工具是无法 建立int4 int8的
pgAdmin只有 integer 或者 bigInteger 可供选择 即
postgresql的数据类型对批
如果你一定想使用 int4 或 int8类型的话只能这样
pg对表名及字段大小写敏感
postgresql对表名及字段大小写敏感 建议在建表语句中的 表名 及 字段名 尽量别用"“双引号 括起来
如果用”“双引号括起来了 在SQL中的只能将表名或字段名也得用”“括起来后 postgresql才能识别 即
select ID,name from Ta 这种语句在pg的驱动执行后实际翻译为
select id,name from ta 后会报一个不存在ta表 而库里真实的表为"Ta”
因此语句 只能写成 select “ID”,name from “Ta” 才能过
造成了不必要的麻烦 ,所以 直接规范一下在建表时 统一都用小写
关于pg大小写敏感的对执行语句及shardingsphere的影响测试如下
测试链接地址
因此在使用MBG时,要在pg创建表时用小写,同是在MBG中生在表也为小写即如下图
这种在MBG实际生成时会将Mycup 给识别成mycup 如果你的库里的表为"Mycup" 那么此时无法生成文件 他会找不到即报下面警告