Java开发中的你,代码基本都是工具生成了吧?谁还手写

两毛五哥哥
02-12 16:43
avatar

近使用MyBatis开发项目,为了快速开发,发现了一个可快速生成mapper类和mapper配置文件及Model的插件-

MyBatis-Generator,总结下该插件的使用及最佳实践.

需求

为数据库中的表teacher生成Teacher.java, TeacherMapper.java, TeacherMapper.xml

由于该插件生成的TeacherMapper.java, TeacherMapper.xml会带有example, 不希望生成example

数据库中的字段写有注释, 希望注释能自动生成在Teacher.java中

实现

实现需求一

1> 建表-teacher

1CREATE TABLE `test`.`teacher` (

2> 配置properties常量

1# 数据库驱动jar 路径

3> 配置文件-generatorConfig.xml

1<?xml version="1.0" encoding="UTF-8"?>

4> 运行maven - Run As Maven build

Goals 参数 : mybatis-generator:generate -Dmybatis.generator.overwrite=true

实现需求二

修改配置文件-generatorConfig.xml, 将table标签修改如下

1<table tableName="teacher" enableCountByExample="false"

实现需求三

修改mybatis-generator源码

位置: mybatis-generator-core/src/main/java/org/mybatis/generator/internal/DefaultCommentGenerator.java

修改该类的方法: addFieldComment

1public void addFieldComment(Field field,如果不想修改源码, 可以下载mybatis生成中文注释项目, maven本地安装后在pom中配置version即可.

使用git克隆github项目(mybatis-generator源项目)

1// 克隆 parent碰到的问题:

Could not find artifact com.sun:tools:jar:0 at specified path…

平台: Mac

Jdk: 自带的jdk_1.6.0

解决办法: 安装jdk1.7, 该版本带有tools.jar

最佳实践

在以上三点需求完成后, 还可做以下修改使得开发更快更敏捷

配置文件中commentGenerator配置项最好不要设置为不生成注释,因为这样带来的问题是在自动生成的代码上不会存在@mbggenerated 这样的标记,这个标记是用来标注这些代码是代码生成器生成的,如果关闭了注释,我们在多次使用mybatis generator重新生成代码时会导致在已有生成的文件上追加生成重复的内容,导致代码错误,故我建议如果你只生成一次代码,以后再不用工具生成可以关闭注释,如果会重复生成就要把注释开关打开。以下配置参数是关闭时间注释:

1<commentGenerator>Model示例

1
public class Teacher { 
/** * 主键id,所属表字段为teacher.id */
 private Long id; 
/** * 名称,所属表字段为teacher.name */ 
  private String name; 
/** * 年龄,所属表字段为teacher.age */ 
  private Short age;
/** * 性别,所属表字段为teacher.sex */ 
  private String sex; 
/** * 获取 主键id 字段:teacher.id
 * * @return teacher.id, 主键id */ 
public Long getId() { return id; } 
/** * 设置 主键id 字段:teacher.id * * @param id teacher.id, 主键id */ 
public void setId(Long id) { this.id = id; } 
/** * 获取 名称 字段:teacher.name * * @return teacher.name, 名称 */
 public String getName() { return name; }
/** * 设置 名称 字段:teacher.name * * @param name teacher.name, 名称 */ 
public void setName(String name) { this.name = name == null ? null : name.trim(); } 
/** * 获取 年龄 字段:teacher.age * * @return teacher.age, 年龄 */
 public Short getAge() { return age; }
/** * 设置 年龄 字段:teacher.age * * @param age teacher.age, 年龄 */ 
  public void setAge(Short age) { this.age = age; } 
/** * 获取 性别 字段:teacher.sex * * @return teacher.sex, 性别 */ 
  public String getSex() { return sex; } 
/** * 设置 性别 字段:teacher.sex * * @param sex teacher.sex, 性别 */ 
  public void setSex(String sex) { 
   this.sex = sex == null ? null : sex.trim(); 
}
}

翻译来自google,原文链接:http://arccode.net/2015/02/07/MyBatis-Generator%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值