泰州做网站哪家好横泉水库建设管理局网站
web/
2025/9/28 1:51:01/
文章来源:
泰州做网站哪家好,横泉水库建设管理局网站,博山网站建设,沈阳百度推广哪家好1 前言
在日常开发工作中#xff0c;我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中#xff0c;注释并不是我们想要的#xff0c;所以一般在Generator配置文件中#xff0c;会设置不自动生成注释。带来的问题…1 前言
在日常开发工作中我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中注释并不是我们想要的所以一般在Generator配置文件中会设置不自动生成注释。带来的问题就是自动生成代码之后我们还要自己去类文件中把注释加上如果生成的类较少还好如果有生成很多类文件自己加注释是一件繁琐的工作。
通过重写Mybatis Generator的CommentGenerator接口可以方便地生成自己想要的注释减少重复工作。
2 使用Java方式执行Mybatis Generator
2.1 IDEA中新建Maven项目
pom.xml中引入jar包 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdorg.example/groupId artifactIdMyGenerator/artifactId version1.0-SNAPSHOT/version properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target /properties dependencies dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.16/version /dependency dependency groupIdorg.mybatis.generator/groupId artifactIdmybatis-generator-core/artifactId version1.3.7/version /dependency /dependencies /project
2.2 创建generatorConfig.xml
随便找个目录放我放在src/main/resources目录下
?xml version1.0 encodingUTF-8?!DOCTYPE generatorConfiguration PUBLIC-//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtdgeneratorConfigurationcontext idmysql defaultModelTypehierarchical targetRuntimeMyBatis3Simple !-- 生成的 Java 文件的编码 --property namejavaFileEncoding valueUTF-8/!-- 格式化 Java 代码 --property namejavaFormatter valueorg.mybatis.generator.api.dom.DefaultJavaFormatter/!-- 格式化 XML 代码 --property namexmlFormatter valueorg.mybatis.generator.api.dom.DefaultXmlFormatter/commentGeneratorproperty namesuppressAllComments valuefalse //commentGenerator!-- 配置数据库连接 --jdbcConnection driverClasscom.mysql.cj.jdbc.DriverconnectionURLURLuserIduser passwordpassword!-- 设置 useInformationSchema 属性为 true --property nameuseInformationSchema valuetrue //jdbcConnection!-- 生成实体的位置 --javaModelGenerator targetPackagecom.jd.bulktargetProjectsrc/main/javaproperty nameenableSubPackages valuetrue//javaModelGenerator!-- 生成 Mapper XML 的位置 --sqlMapGenerator targetPackagecom.jd.bulktargetProjectsrc/main/resourcesproperty nameenableSubPackages valuetrue//sqlMapGenerator!-- 生成 Mapper 接口的位置 --javaClientGenerator typeXMLMAPPERtargetPackagecom.jd.bulktargetProjectsrc/main/javaproperty nameenableSubPackages valuetrue//javaClientGenerator!-- 设置数据库的表名和实体类名 --table tableNameworker domainObjectNameWorker//context/generatorConfiguration
2.3 创建main方法运行Generator public class Generator { public static void main(String[] args) throws Exception { ListString warnings new ArrayList(2); ConfigurationParser cp new ConfigurationParser(warnings); File configFile new File(src/main/resources/generatorConfig.xml); Configuration config cp.parseConfiguration(configFile); DefaultShellCallback callback new DefaultShellCallback(true); MyBatisGenerator new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }
运行main方法生成默认注释如下并不是我们想要的注释所以一般会配置为注释不生成 2.4 实现CommentGenerator接口
重写以下方法自定义注释
public class MySQLCommentGenerator implements CommentGenerator {private final Properties properties;public MySQLCommentGenerator() {properties new Properties();}Overridepublic void addConfigurationProperties(Properties properties) {// 获取自定义的 propertiesthis.properties.putAll(properties);}/*** 重写给实体类加的注释*/Overridepublic void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {String author properties.getProperty(author);String dateFormat properties.getProperty(dateFormat, yyyy-MM-dd);SimpleDateFormat dateFormatter new SimpleDateFormat(dateFormat);// 获取表注释String remarks introspectedTable.getRemarks();topLevelClass.addJavaDocLine(/**);topLevelClass.addJavaDocLine( * remarks);topLevelClass.addJavaDocLine( *);topLevelClass.addJavaDocLine( * author author);topLevelClass.addJavaDocLine( * date dateFormatter.format(new Date()));topLevelClass.addJavaDocLine( */);}/*** 重写给实体类字段加的注释*/Overridepublic void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {// 获取列注释String remarks introspectedColumn.getRemarks();field.addJavaDocLine(/**);field.addJavaDocLine( * remarks);field.addJavaDocLine( */);}/*** 重写给实体类get方法加的注释*/Overridepublic void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {// 获取表注释String remarks introspectedColumn.getRemarks();method.addJavaDocLine(/**);method.addJavaDocLine( * method.getName());method.addJavaDocLine( */);}
2.5 修改generatorConfig.xml配置
将generatorConfig.xml文件中的commentGenerator做如下修改type属性选择自己的实现类
commentGenerator typecom.generator.MySQLCommentGeneratorproperty nameauthor valueYour Name/property namedateFormat valueyyyy/MM/dd//commentGenerator
运行main方法生成注释如下 3 使用Maven方式执行Mybatis Generator
Pom.xml文件中增加以下配置需要引入generator插件时依赖实现CommentGenerator接口的jar包要先把自己的jar包install到本地仓库。
否则会报com.generator.MySQLCommentGenerator找不到其他配置同上。
builddefaultGoalcompile/defaultGoalpluginsplugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.4.0/versionconfigurationconfigurationFilesrc/main/resources/generatorConfig.xml/configurationFileverbosetrue/verboseoverwritetrue/overwrite/configurationdependencies!-- 其他的数据库需要修改依赖 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.16/version/dependency!-- 引用实现CommentGenerator接口的jar包 --dependencygroupIdorg.example/groupIdartifactIdMyGenerator/artifactIdversion1.0-SNAPSHOT/version/dependency/dependencies/plugin/plugins
4 源码分析
查看执行Mybatis Generator的main方法主要分为两部分解析指定的配置文件与调用生成java文件和Mapper文件的方法 4.1 解析指定的xml配置文件
跟踪解析xml文件的方法cp.parseConfiguration(configFile)发现底层以Document形式读取xml文件根据标签名解析各标签属性保存到Configuration实例中。 其中解析commentGenerator标签的方法parseCommentGenerator(context, childNode)中会获取commentGenerator标签的type属性值也就是自定义的”com.generator.MySQLCommentGenerator”类放到Context实例中。 4.2 调用生成java文件和Mapper文件的方法
xml配置文件解析完成得到Configuration实例后面生成文件的工作都会从Configuration实例中获取所需数据。生成文件的方法主要步骤为1.连接数据库,查询表信息与列信息2.生成文件内容3.写入生成文件。
其中生成文件内容时会根据Context的type属性反射创建MySQLCommentGenerator实例然后调用自定义的生成注释方法。
如生成实体类文件的注释调用addModelClassComment方法 生成字段注释调用addFieldComment方法 生成Get方法注释调用addGetterComment方法 在调用addModelClassCommentaddFieldCommentaddGetterComment等生成注释的方法时执行的都是MySQLCommentGenerator类的方法这样就实现了生成自定义注释的功能。
5 总结
通过使用自定义实现CommentGenerator接口让自动生成的代码加上我们想要的注释可以省去自己加注释的麻烦。
与一般使用Mybatis Generator生成代码的方式一样多实现个接口即可。 使用Maven方式运行时需要在pom.xml引入插件时依赖自己jar包。
作者京东物流 王建乐
来源京东云开发者社区 自猿其说 Tech 转载请注明来源
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83075.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!