PDManer区分索引类型

背景

PDmaner是一个非常强大的数据库建模工具,但是还有一些细节功能还是做的不到位,比如对索引类型的不区分。比如我需要建立全文索引,工具中没地方选择,导出来的ddl语句全部是普通索引。

解决

有改源码能力的,应该加一个类型区分应该也很方便,但是对于没有修改源码能力的人来说也是有比较方便的解决方案的。发现是通过脚本模板的方式来生成DDL语句,所以就考虑通过修改脚本模板来解决。

步骤如下:

1.规范:比如全文索引的命名规范idx_search开头

2.修改模板脚本

{{~ it.entity.indexes:index}}
{{? index.defKey != "PRIMARY"}}
CREATE {{? index.unique}}UNIQUE {{?}}{{? index.defKey.startsWith("idx_search")}}FULLTEXT{{?}} INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}}) {{? index.defKey.startsWith("idx_search")}} with parser ngram{{?}};
{{?}}
{{~}}

 这里还解决了 每次从数据库反序列化的时候默认生成PRIMARY索引的问题

模板代码解释:

项目JavaScript语法对应语法案例
输出变量={{=变量名}{{=it.name}}
条件判断if{{? 条件表达式}}{{? i > 3}}
条件转折else/else if{{??}}/{{?? 条件表达式}}{{?? i ==2}}
循环for{{~ 循环变量}}{{~ it.arr:item}}...{{~}}
执行方法funcName(){{= funcName() }}{{= it.sayHello() }}

全局方法:可以通过it.func.方法名使用

方法名方法功能参数介绍案例
camel下划线转驼峰参数1:需要转化的字符串,参数2:首字母是否需要大写('USER_NAME', true) => 'userName'
underline驼峰转下划线参数1:需要转化的字符串,参数2:是否全大写('userName', true) => 'USER_NAME'
upperCase全大写参数1:需要转化的字符串('userName') => 'USERNAME'
lowerCase全小写参数1:需要转化的字符串('USERNAME') => 'username'
join多个字符串拼接不限参数,最后一个参数为拼接符('user','name','/') => 'user/name'
intersect两个数组交集参数1:数组1,参数2:数组2(['1', '2'], ['1', '2', '3']) => ['1', '2']
union两个数组并集参数1:数组1,参数2:数组2(['1', '2'], ['1', '2', '3']) => ['1', '2', '3']
minus两个数组差集参数1:数组1,参数2:数组2;(数组1比数组2多出的数据)(['1', '2', '3'], ['1', '2']) => ['3']
indexRebuildDDL获取重建索引DDL-(baseInfo, newIndexes, fullFields, type) => ''
dropDDL获取删除表/视图DDL-(data, type) => ''
createDDL获取创建表/视图DDL-(data, type) => ''

参考:
https://tech.meituan.com/2017/03/24/dot.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我的示例模板 =========模板开始================== package com.sgcc.{{=it.module.name}}.domain; $blankline import javax.persistence.*; import java.io.Serializable; import java.util.Date; import lombok.Data; import org.hibernate.annotations.GenericGenerator; $blankline $blankline /** * 容量电价信息表 * @Column参数: 1. name: 指定映射到数据库中的字段名 2. unique: 是否唯一,默认为false 3. nullable: 是否允许为null,默认为true 5. insertable: 是否允许插入,默认为true 6. updatetable: 是否允许更新,默认为true 7. columnDefinition: 指定该属性映射到数据库中的实际类型,通常是自动判断。 * @author changjiakang */ @Data @Entity @Table(name="{{=it.entity.title}}") public class {{=it.func.camel(it.entity.title,true) }} implements Serializable{ {{~it.entity.fields:field:index}} /** {{=it.func.join(field.chnname,field.remark,';')}} */ {{? field.pk }} @Id @GeneratedValue(generator = "idGenerator") @GenericGenerator(name = "idGenerator", strategy = "uuid") @Column(name = "ID", nullable = false, length = 32) {{?}} @Column(name = "{{=field.name}}", nullable = true) private {{=field.type}} {{=it.func.camel(field.name,false)}}; {{~}} } $blankline $blankline =================================================== import java.io.Serializable; import java.math.BigDecimal; import lombok.Data; /** * 容量电价信息Vo * @author changjiakang */ @Data public class {{=it.func.camel(it.entity.title,true) }}Vo implements Serializable { {{~it.entity.fields:field:index}} /** {{=it.func.join(field.chnname,field.remark,';')}} */ private {{=field.type}} {{=it.func.camel(field.name,false)}}; {{~}} } =========模板结束================== 四.重命名数据类型,生成Po Vo如果字段类型为空,需要设置所有空字段对应的数据类型 五.生成po vo 六.数据库新加的表需要重新导入

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值