逆向工程mysql注释_mybatis的逆向工程和中文注解

本文介绍了如何实现一个Mybatis Comment Generator,通过自定义配置属性,控制日期添加和所有注释的显示,并展示了如何为字段、模型类、内嵌类、枚举、getter/setter和通用方法添加注释。
摘要由CSDN通过智能技术生成

importorg.mybatis.generator.api.CommentGenerator;importorg.mybatis.generator.api.IntrospectedColumn;importorg.mybatis.generator.api.IntrospectedTable;import org.mybatis.generator.api.dom.java.*;importorg.mybatis.generator.api.dom.xml.XmlElement;importorg.mybatis.generator.config.MergeConstants;importorg.mybatis.generator.config.PropertyRegistry;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;import staticorg.mybatis.generator.internal.util.StringUtility.isTrue;/*** TODO

*

* @Author mx

* @Date: 2019-04-09 11:32*/

public class MybatisCommentGenerator implementsCommentGenerator {privateProperties properties;privateProperties systemPro;private booleansuppressDate;private booleansuppressAllComments;privateString currentDateStr;publicMybatisCommentGenerator() {super();

properties= newProperties();

systemPro=System.getProperties();

suppressDate= false;

suppressAllComments= false;

currentDateStr= (new SimpleDateFormat("yyyy-MM-dd")).format(newDate());

}/*** Adds properties for this instance from any properties configured in the

* CommentGenerator configuration.

*

* This method will be called before any of the other methods.

*

*@paramproperties All properties from the configuration*/

public voidaddConfigurationProperties(Properties properties) {this.properties.putAll(properties);

suppressDate=isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE));

suppressAllComments=isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));

}/***@paramfield the field

*@paramintrospectedTable the introspected table

*@paramintrospectedColumn*/

public voidaddFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

field.addJavaDocLine("/**");

sb.append(" * ");

sb.append(introspectedColumn.getRemarks());

field.addJavaDocLine(sb.toString());

addJavadocTag(field,false);

field.addJavaDocLine(" */");

}/*** Adds the field comment.

*

*@paramfield the field

*@paramintrospectedTable*/

public voidaddFieldComment(Field field, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

field.addJavaDocLine("/**");

sb.append(" * ");

sb.append(introspectedTable.getFullyQualifiedTable());

field.addJavaDocLine(sb.toString());

field.addJavaDocLine(" */");

}public voidaddModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

topLevelClass.addJavaDocLine("/**");

sb.append(" * ");

sb.append(introspectedTable.getRemarks());

sb.append(" ");

sb.append(introspectedTable.getTableType());

sb.append(" ");

sb.append(getDateString());

topLevelClass.addJavaDocLine(sb.toString());

topLevelClass.addJavaDocLine(" */");

}/*** Adds the inner class comment.

*

*@paraminnerClass the inner class

*@paramintrospectedTable*/

public voidaddClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

innerClass.addJavaDocLine("/**");

sb.append(" * ");

sb.append(introspectedTable.getFullyQualifiedTable());

sb.append(" ");

sb.append(getDateString());

innerClass.addJavaDocLine(sb.toString());

innerClass.addJavaDocLine(" */");

}/*** Adds the inner class comment.

*

*@paraminnerClass the inner class

*@paramintrospectedTable the introspected table

*@parammarkAsDoNotDelete*/

public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, booleanmarkAsDoNotDelete) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

innerClass.addJavaDocLine("/**");

sb.append(" * ");

sb.append(introspectedTable.getFullyQualifiedTable());

innerClass.addJavaDocLine(sb.toString());

sb.setLength(0);

sb.append(" * @author ");

sb.append(systemPro.getProperty("user.name"));

sb.append(" ");

sb.append(currentDateStr);

addJavadocTag(innerClass, markAsDoNotDelete);

innerClass.addJavaDocLine(" */");

}/*** Adds the enum comment.

*

*@paraminnerEnum the inner enum

*@paramintrospectedTable*/

public voidaddEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;

}

StringBuilder sb= newStringBuilder();

innerEnum.addJavaDocLine("/**");

addJavadocTag(innerEnum,false);

sb.append(" * ");

sb.append(introspectedTable.getFullyQualifiedTable());

innerEnum.addJavaDocLine(sb.toString());

innerEnum.addJavaDocLine(" */");

}/*** Adds the getter comment.

*

*@parammethod the method

*@paramintrospectedTable the introspected table

*@paramintrospectedColumn*/

public voidaddGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;

}

method.addJavaDocLine("/**");

StringBuilder sb= newStringBuilder();

sb.append(" * ");

sb.append(introspectedColumn.getRemarks());

method.addJavaDocLine(sb.toString());

sb.setLength(0);

sb.append(" * @return ");

sb.append(introspectedColumn.getActualColumnName());

sb.append(" ");

sb.append(introspectedColumn.getRemarks());

method.addJavaDocLine(sb.toString());

addJavadocTag(method,false);

method.addJavaDocLine(" */");

}/*** Adds the setter comment.

*

*@parammethod the method

*@paramintrospectedTable the introspected table

*@paramintrospectedColumn*/

public voidaddSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {if(suppressAllComments) {return;

}

method.addJavaDocLine("/**");

StringBuilder sb= newStringBuilder();

sb.append(" * ");

sb.append(introspectedColumn.getRemarks());

method.addJavaDocLine(sb.toString());

Parameter parm= method.getParameters().get(0);

sb.setLength(0);

sb.append(" * @param ");

sb.append(parm.getName());

sb.append(" ");

sb.append(introspectedColumn.getRemarks());

method.addJavaDocLine(sb.toString());

addJavadocTag(method,false);

method.addJavaDocLine(" */");

}/*** Adds the general method comment.

*

*@parammethod the method

*@paramintrospectedTable*/

public voidaddGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {if(suppressAllComments) {return;

}

method.addJavaDocLine("/**");//addJavadocTag(method, false);

StringBuilder sb = newStringBuilder();

sb.append(" * ");

sb.append(MergeConstants.NEW_ELEMENT_TAG);

String s=method.getName();

sb.append(' ');

sb.append(s);

method.addJavaDocLine(sb.toString());

method.addJavaDocLine(" */");

}public voidaddJavaFileComment(CompilationUnit compilationUnit) {

}public voidaddComment(XmlElement xmlElement) {

}public voidaddRootComment(XmlElement rootElement) {

}protected void addJavadocTag(JavaElement javaElement, booleanmarkAsDoNotDelete) {

javaElement.addJavaDocLine(" *");

StringBuilder sb= newStringBuilder();

sb.append(" * ");

sb.append(MergeConstants.NEW_ELEMENT_TAG);if(markAsDoNotDelete) {

sb.append(" do_not_delete_during_merge");

}

String s=getDateString();if (s != null) {

sb.append(' ');

sb.append(s);

}

javaElement.addJavaDocLine(sb.toString());

}protectedString getDateString() {

String result= null;if (!suppressDate) {

result=currentDateStr;

}returnresult;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以回答这个问题。以下是一个简单的 Spring Boot 项目,使用 MyBatisMySQL 数据库进行 CRUD 操作的代码和注释。 首先,需要在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MySQL Connector/J --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8..23</version> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.</version> </dependency> </dependencies> ``` 接下来,创建一个实体类 User,用于映射数据库中的 user 表: ```java public class User { private Long id; private String name; private Integer age; // 省略 getter 和 setter 方法 } ``` 然后,创建一个 Mapper 接口 UserMapper,用于定义 CRUD 操作: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") void insert(User user); @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}") void update(User user); @Delete("DELETE FROM user WHERE id = #{id}") void delete(Long id); } ``` 注意,这里使用了 MyBatis注解方式来定义 SQL 语句。 接下来,创建一个 Service 类 UserService,用于调用 Mapper 接口中定义的方法: ```java @Service public class UserService { @Autowired private UserMapper userMapper; public User findById(Long id) { return userMapper.findById(id); } public void insert(User user) { userMapper.insert(user); } public void update(User user) { userMapper.update(user); } public void delete(Long id) { userMapper.delete(id); } } ``` 最后,创建一个 Controller 类 UserController,用于处理 HTTP 请求: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User findById(@PathVariable Long id) { return userService.findById(id); } @PostMapping public void insert(@RequestBody User user) { userService.insert(user); } @PutMapping("/{id}") public void update(@PathVariable Long id, @RequestBody User user) { user.setId(id); userService.update(user); } @DeleteMapping("/{id}") public void delete(@PathVariable Long id) { userService.delete(id); } } ``` 这里使用了 Spring MVC 的注解方式来定义 HTTP 请求处理方法。 以上就是一个简单的 Spring Boot 项目,使用 MyBatisMySQL 数据库进行 CRUD 操作的代码和注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值