Idea中使用Easy Code更具数据库表自动生成java代码
步骤1:安装插件并重启启动Idea
步骤2:找到idea的dataSource,并连接数据库
步骤3:选择需要的表,选中easy code
步骤4:指定文件生成的module,路径以及需要生成的类使用的模板
easyCode 默认是mybatis,因项目使用jpa,所以此处提供jpa模板:
entity:
##引入宏定义 $!define ##定义初始变量 #set($entityName = $tool.append("Base", $tableInfo.name)) ##设置回调 $!callback.setFileName($tool.append($entityName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/model")) ##使用宏定义设置包后缀 #setPackageSuffix("model") ##使用全局变量实现默认包导入 $!autoImport import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Entity; import org.hibernate.annotations.GenericGenerator; import java.io.Serializable; ##使用宏定义实现类注释信息 #tableComment("实体类") @Entity @Table(name="$!{tableInfo.obj.name}") public class $!{entityName} implements Serializable { private static final long serialVersionUID = $!tool.serial(); #foreach($column in $tableInfo.fullColumn) #if(${column.comment})/** * ${column.comment} */#end #if(${velocityCount} == 1) @Id @Column(name = "$column.obj.getName()") @GenericGenerator(name = "system-uuid", strategy = "uuid") @GeneratedValue(generator = "system-uuid") #else @Column(name = "$column.obj.getName()") #end private $!{tool.getClsNameByFullName($column.type)} $!{column.name}; #end #foreach($column in $tableInfo.fullColumn) ##使用宏定义实现get,set方法 #getSetMethod($column) #end }
model模板:
##定义初始变量 #set($modelName = $tool.append($tableInfo.name)) #set($entityName = $tool.append("Base", $tableInfo.name)) ##设置回调 $!callback.setFileName($tool.append($modelName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/model")) #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}model; /** * $!{tableInfo.comment}($!{tableInfo.name})表数据库model * * @author $!author * @since $!time.currTime() */ public class ${modelName} extends ${entityName} { }
dao模板:
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Dao")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao")) ##拿到主键 #if(!$tableInfo.pkColumn.isEmpty()) #set($pk = $tableInfo.pkColumn.get(0)) #set($pkType = $tableInfo.pkColumn.get(0).shortType) #end #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao; import $!{tableInfo.savePackageName}.model.Base$!{tableInfo.name}; import com.acmtc.common.dao.IRepository; /** * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层 * * @author $!author * @since $!time.currTime() */ public interface $!{tableName} extends IRepository<Base$!{tableInfo.name}, ${pkType}> { }
service模板:
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Service")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/service")) ##拿到主键 #if(!$tableInfo.pkColumn.isEmpty()) #set($pk = $tableInfo.pkColumn.get(0)) #end #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service; import $!{tableInfo.savePackageName}.model.$!{tableInfo.name}; import java.util.List; /** * $!{tableInfo.comment}($!{tableInfo.name})表服务接口 * * @author $!author * @since $!time.currTime() */ public interface $!{tableName} { }
serviceImpl模板:
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "ServiceImpl")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl")) ##拿到主键 #if(!$tableInfo.pkColumn.isEmpty()) #set($pk = $tableInfo.pkColumn.get(0)) #end #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl; import $!{tableInfo.savePackageName}.model.$!{tableInfo.name}; import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao; import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import javax.annotation.Resource; import java.util.List; /** * $!{tableInfo.comment}($!{tableInfo.name})表服务实现类 * * @author $!author * @since $!time.currTime() */ @Service @Transactional public class $!{tableName} implements $!{tableInfo.name}Service { @Resource private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao; }
注:因项目各异,具体使用时候可能需要微小调整
我们曾如此渴望生命的波澜,到后来才发现,人生最曼妙的风景是内心的淡定与从容