基于h2数据库使用mybatis-generator-maven-plugin生成代码实践

基于h2数据库使用mybatis-generator-maven-plugin生成代码实践

2023年7月24日发(作者:)

基于h2数据库使⽤mybatis-generator-maven-plugin⽣成代码实践背景在⼀般⽤到mybatis的项⽬中,⼤家⼀般都习惯⽤mybatis-generator直连数据库来⽣成mapper⽂件和java代码,然后再根据实际情况对项⽬中已有的mapper⽂件和java代码进⾏调整,这样做可能会存在2个问题:在把⽣成的mapper⽂件和java代码整合到到原项⽬的过程中,有可能会出错直连的数据库有可能还没有更新schema,导致⽣成的mapper⽂件和java代码还不是预期的因此,我们把mybatis-generator⽣成的mapper⽂件和java代码直接作为⼀个单独的模块来维护,输出⼀个jar包即可。以maven⼯程为例,其它项⽬只需要以dependency的⽅式引⼊并直接使⽤即可,避免了调整过程中可能出错的环节;另外,我们把数据库最新的schema先导⼊h2,然后再⽤mybatis-generator连接到h2,⽣成mapper⽂件和java代码,这样就保证了每次⽣成的代码都是我们所期望的,⽽且这个过程我们不再需要连接实际的数据库,随时随地⽣成mapper⽂件和java代码。接下来我们简单介绍⼀下如何使⽤快嘉mbg脚⼿架快速⽣成这样的⼀个模块和这个模块的基本使⽤⽅法。1.环境准备版本JDKMaven1.8+Maven 3.3.9+2.使⽤快嘉mbg脚⼿架⽣成⼀个新项⽬脚⼿架声明: ype:mbg-archetype:1.0-SNAPSHOT 脚⼿架参数:groupId:pom坐标artifactId:pom坐标,这个值同时会影响到⼯程下中的artifactId、pom中引⽤的插件mybatis-generator-maven-plugin的配置sqlFile和链接的h2库名称、该⼯程下的sql⽂件名。version:pom坐标package:⽣成代码包名前缀 选择合适的参数,在任⼀⽬录下执⾏脚⼿架命令(可参考如下⽰例命令,⽰例命令会在当前执⾏⽬录⽣成⼀个mbgdemo⽂件夹)mvn archetype:generate -U -B -DgroupId= -DartifactId=mbgdemo -Dpackage="o" -Dversion=1.0-SNAPSHOmbgdemo⽬录下⽂件组织结构│ │ │└─src └─main ├─java └─resources =======================================================================3.将修改成你⼯程的建库sql,可在本⼯程下⽣成mybatis相关entity和mapper新打开⼀个term窗⼝,并进⼊mbgdemo⽬录,执⾏mvn clean package就可以在target⽬录⽣成后,该jar⾥已经包含了mybatis的mapper代码和xml配置⽂件,该jar可以提供给其他模块以dependency的⽅式引⼊并直接使⽤。具体配置详见 src/main/resources/,可参考()进⾏调整

注意:mybatis-generator的覆盖只针对以上配置⽂件中出现的table节点有效,以上⾯配置⽂件为例:如果第⼀次代码⽣成同时配置了t_user和t_user_login,第⼆次代码⽣成只配置了t_user,则t_user相关java代码和xml配置⽂件会被覆盖,⽽t_user_login相关java代码和xml配置⽂件将会保留不会被处理,本⽰例⼯程提供了⼀种解决⽅案,在⽣成代码之前,使⽤maven-clean-plugin同时删除了src/main/java/下所有java代码和src/main/resources下的mappers⽬录。 s maven-clean-plugin ${n} src/main/java **/* src/main/resources mappers/ 4.下⾯演⽰⼀下定制化maven-clean-plugin取得的效果新打开⼀个term窗⼝,并进⼊mbgdemo⽬录cd mbgdemomvn clean generate-sources这时候mbgdemo⽬录下⽂件组织结构,这是mybatis-generator新⽣成代码的时候,这时还没有编译│ │ │└─src └─main ├─java │ └─com │ └─fastjrun │ └─share │ └─mbgdemo │ ├─entity │ │ │ │ │ │ │ │ │ └─mapper │ │ │ └─resources │ │ └─mappers 接下来执⾏mvn clean,会发现mbgdemo还原到了初始化的时候,⽂件组织结构⼜变如下│ │ │└─src └─main ├─java └─resources 使⽤H2数据库的⼀些注意事项⽤mysqldump导出结构,参考命令 mysqldump -uroot -p123456 -d demo> ⽤导出的替换项⽬中的e字段不能为“0000-00-00 00:00:00”,建议替换为“1970-01-01 08:00:01”⽆论字段还是表级别,h2都不⽀持CHARSET=utf8类似字段,可以全部替换为空字符h2不⽀持显⽰声明USING BTREE 可以全部替换为空字符h2表级别只⽀持COMMENT和ENGINE两个属性,且COMMENT要在ENGINE之前h2要求全库索引名称全库唯⼀,这样就需要处理数据库中所有重复的索引名称,保证,如DEMO_INDEX⼀共出现了4次,依次调整为DEMO_INDEX、DEMO_INDEX2、DEMO_INDEX3和DEMO_INDEX4

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690193140a312399.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信