Давненько я свои заметки не публиковал :) Прошу прощения на форматирование текста, когда-нибудь я изменю шаблон и оберну весь код в спойлеры с красивым оформлением :)
На днях понял, что в Intellij Edea нет шаблона для создания обыкновенного файла сущности. Можно лишь создать его на основе таблицы в БД.
А вот если ты хочешь маппить данные в БД с помощью Hibernate, то создавать придется сначала класс, затем добавлять икьюалс, хешкод, туСтринг, геттеры, сеттеры, сериализацию, аннотации и т.д.
В Netbeans это делается в два клика, в Idea этого вообще нет, по крайней мере я долго искал и не нашел.
Недолго думая и имея в запасе немного время, создал шаблон.
По шагам, картинками и кодом, покажу как его добавить в свою Idea.
Есть в нем, конечно, недочеты, которые я бы устранил, возможно, будь у меня время и желание улучшать его дальше :)
Вот так сейчас выглядит в меню пункты для создания новых файлов, мы можете свой созданный шаблон назвать как угодно, у меня он назван просто Entity.
Ниже на скриншоте видно пункт:
Edit File Templates...
Сюда нам и нужно...
Откроется окно, в нем жмем на плюс слева, переименовываем как хотим наш шаблон, а справа вставляем код на, как я понял, Apache Velocity:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;
@Entity #if (${Class_Name} != ${Class_Name}) (name=${Class_Name}) #end
public class ${Class_Name} implements Serializable {
##set ( $id_field_type = "Integer")
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private ${id_field_type} id;
public ${id_field_type} getId() {
return id;
}
public void setId(${id_field_type} id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ${Class_Name})) {
return false;
}
${Class_Name} other = (${Class_Name}) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "src.${Class_Name}[ id=" + id + " ]";
}
}
Обратите внимание на строку
то вам не нужно будет при создании файла вводить значение переменной id_field_type.
А вот так:
Нам нужно будет ввести лишь имя, а поле id будет создано с типом Integer.
На днях понял, что в Intellij Edea нет шаблона для создания обыкновенного файла сущности. Можно лишь создать его на основе таблицы в БД.
А вот если ты хочешь маппить данные в БД с помощью Hibernate, то создавать придется сначала класс, затем добавлять икьюалс, хешкод, туСтринг, геттеры, сеттеры, сериализацию, аннотации и т.д.
В Netbeans это делается в два клика, в Idea этого вообще нет, по крайней мере я долго искал и не нашел.
Недолго думая и имея в запасе немного время, создал шаблон.
По шагам, картинками и кодом, покажу как его добавить в свою Idea.
Есть в нем, конечно, недочеты, которые я бы устранил, возможно, будь у меня время и желание улучшать его дальше :)
Вот так сейчас выглядит в меню пункты для создания новых файлов, мы можете свой созданный шаблон назвать как угодно, у меня он назван просто Entity.
Ниже на скриншоте видно пункт:
Edit File Templates...
Сюда нам и нужно...
Откроется окно, в нем жмем на плюс слева, переименовываем как хотим наш шаблон, а справа вставляем код на, как я понял, Apache Velocity:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;
@Entity #if (${Class_Name} != ${Class_Name}) (name=${Class_Name}) #end
public class ${Class_Name} implements Serializable {
##set ( $id_field_type = "Integer")
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private ${id_field_type} id;
public ${id_field_type} getId() {
return id;
}
public void setId(${id_field_type} id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof ${Class_Name})) {
return false;
}
${Class_Name} other = (${Class_Name}) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "src.${Class_Name}[ id=" + id + " ]";
}
}
Обратите внимание на строку
##set ( $id_field_type = "Integer")
Если ее раскомментировать, т.е. убрать ОДИН символ решетки # в начале,то вам не нужно будет при создании файла вводить значение переменной id_field_type.
#set ( $id_field_type = "Integer")
И окно при создании нашего файла Entity будет выглядеть не так:
А вот так:
Нам нужно будет ввести лишь имя, а поле id будет создано с типом Integer.
Как вы понимаете, если в коде шаблона изменить "Integer" на "Long", то и в созданном файле тип поля id будет с этим типом, т.е. по-умолчанию.
При закомментированной строке придется тип указывать ручками каждый раз при создании файла.
Кроме того, чтобы выглядело красиво можно вместо id_field_type ввести что-то типа Type_of_id_field и тогда в окне создания файла слева от поля будет Type of id field.
В итоге, мы получим в пару кликов и после ввода имени класса, например Contact, вот такой вот файл, который идентичен тому, что получается в Netbeans:
package com.opalev.models.contractor; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import java.io.Serializable; @Entity public class Contact implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Contact)) { return false; } Contact other = (Contact) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "src.Contact[ id=" + id + " ]"; } }
Комментариев нет :
Отправить комментарий