Eclipse 用
maven remote archetype catalog url
https://repo1.maven.org/maven2/archetype-catalog.xml
線上讀取可用的 archetype
2015年6月2日 星期二
2015年3月17日 星期二
[Error] eclipse occur: Error notifying a preference change listener. Check the log for details. Widget is disposed 排解
有時候在使用 eclipse 中切換某些 perspective 時,會發生如下圖一般的錯誤訊息,具體原因不明,但經過查詢谷哥大神及測試,發現是 Breadcrumb bar 所造成,故在沒必要使用時將其關閉即可。
2015年2月13日 星期五
[eclipse]記憶體不足的改善方法 OutOfMemoryErrors
有時候再開啟大檔案,或執行大的程式動作時,常會發生 OoutOfMemoryError 的問題,解決方法有兩種。
參照官網的解決方式:
2014年12月23日 星期二
2014年7月31日 星期四
2014年6月26日 星期四
[MyBatis]簡易CRUD教學
使用工具:
Eclipse Kepler Service Release 2
MySQL 5
使用API:
假設您使用 Maven 來建立專案, .pom 的 dependencies 配置 可以參考
我目前正在使用的配置檔
本範例使用 xml 來設置對應的 mapper 無使用 Annotation
接下來先建立 MaBatis 所需要的 configuration file
在這邊我先設定為 mybatis-config.xml ,習慣上的放置位置在專案中的 resource 目錄中
mybatis-config.xml
properties 標籤 :放置外部配置
typeAliases 標籤:放置別名
environment 標籤:放置環境設定,以id為辨識名稱,可藉此切換環境設定
transactionManage 標籤:type分為JDBC / MANAGEN,JBDC適用於
Tomcat,MANAGEN 適用於 JBoss, WebLogic or GlassFish 這一類可使用EJB來管理
transaction 的環境
dataSource 標籤:type分為POOLED / UNPOOLED 兩種,POOLED 會建立一個連接池(
pool)來管理connection,而UNPOOLED 則是每次連結接建立一個新的 connection
typeHandlers 標籤:在Mappers xml檔案中的SQL對應的輸入資料屬性,如#{studID}等,
皆可自動對應java 的主要屬性及Wrapper,如String/Integer/enum等,若遇到非上述屬性內
的資料,比如說是一個自訂的Object,則需建立一個 extends BaseTypeHandler <T>
的類別,並複寫當中的Method,再藉由typeHandlers 去配置,讓MyBatis 可以找到對應
的資料類別。
jdbc.properties 一樣放置在 resource 目錄中
接著建立 Table Student 所對應的 java bean Student.java
放置在 resource/Models 中
當中的三個 Method,正對應 StudentMapper.xml 中各標籤的 id
代表著該而 xml 的 SQL 語法正與該方法對應
parameterType 傳遞的參數型態
resultType 返回的參數型態
resultMap 為一類別返回型態,而其中的 type="Student" Student 正是之前在
mybatis-config.xml 中 typeAlias 標籤所設定的對應資料方便使用別名而不需使用
com.Models.XXX 的全名
準備用來存取資料用
最後使用junit 來做測試 StudentServiceTest.java
Java Persistence with MyBatis 3
demo程式(右鍵另開視窗下載)
Eclipse Kepler Service Release 2
MySQL 5
使用API:
<mybatis.version>3.2.7</mybatis.version>
<mysql-connector-java.version>5.1.30</mysql-connector-java.version>
<slf4j-api.version>1.7.7</slf4j-api.version>
<slf4j-log4j12.version>1.7.7</slf4j-log4j12.version>
<log4j.version>1.2.17</log4j.version>
流程:
1.建立測試用Table
2.配置 MyBatis 配置檔
3.建立 Table 對應之 java bean
4.建立 Table 對應之 Mapper
5.建立 Mapper對應之 Interface
6.建立 SqlSessionFactory
7.建立 Service
8.建立 TestUnit
首先使用 MySQL 5 Workbench 建立 table
CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL,
dob date DEFAULT NULL,
PRIMARY KEY (stud_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
--塞入測試資料
insert into students(stud_id,name,email,dob)
values (1,'Student1','student1@gmail.com','1983-08-09');
insert into students(stud_id,name,email,dob)
values (2,'Student2','student2@gmail.com','1983-10-21');
--驗證
select * from students;
假設您使用 Maven 來建立專案, .pom 的 dependencies 配置 可以參考
我目前正在使用的配置檔
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>MyBatis_003</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MyBatis_003</name>
<url>http://maven.apache.org</url>
<!-- 設定各dependency 使用的版本 -->
<properties>
<final_name>MyBatis_003</final_name>
<jdk.version>1.6</jdk.version>
<asm.version>3.3.1</asm.version>
<asm-commons.version>3.3.1</asm-commons.version>
<asm-tree.version>3.3.1</asm-tree.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-logging.version>1.1.3</commons-logging.version>
<commons-io.version>2.2</commons-io.version>
<freemarker.version>2.3.9</freemarker.version>
<junit.version>4.11</junit.version>
<javassist.version>3.18.1-GA</javassist.version>
<jquery.version>1.8.2</jquery.version>
<log4j.version>1.2.17</log4j.version>
<mysql-connector-java.version>5.1.30</mysql-connector-java.version>
<mybatis.version>3.2.7</mybatis.version>
<ognl.version>3.0.8</ognl.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<struts2-core.version>2.3.16.3</struts2-core.version>
<struts2-dojo-plugin.version>2.3.16.3</struts2-dojo-plugin.version>
<struts2-json-plugin.version>2.3.16.3</struts2-json-plugin.version>
<struts2-spring-plugin.version>2.3.8</struts2-spring-plugin.version>
<struts2-junit-plugin.version>2.3.16.3</struts2-junit-plugin.version>
<!-- 頁面排版用 siteMesh -->
<struts2-sitemesh-plugin.version>2.3.16.3</struts2-sitemesh-plugin.version>
<!-- Annotation 用 -->
<struts2-convention-plugin.version>2.3.16.3</struts2-convention-plugin.version>
<!-- 頁面排版用 siteMesh -->
<sitemesh.version>2.4.2</sitemesh.version>
<slf4j-api.version>1.7.7</slf4j-api.version>
<slf4j-log4j12.version>1.7.7</slf4j-log4j12.version>
<spring-test.version>3.2.0.RELEASE</spring-test.version>
<spring-web.version>3.2.0.RELEASE</spring-web.version>
<spring-context.version>3.2.0.RELEASE</spring-context.version>
<spring-core.version>3.2.0.RELEASE</spring-core.version>
<spring-beans.version>3.2.0.RELEASE</spring-beans.version>
<xwork-core.version>2.3.16.3</xwork-core.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2-core.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>${ognl.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>${xwork-core.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-commons</artifactId>
<version>${asm-commons.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-tree</artifactId>
<version>${asm-tree.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-dojo-plugin</artifactId>
<version>${struts2-dojo-plugin.version}</version>
</dependency>
<dependency>
<groupId>com.efsavage.jquery</groupId>
<artifactId>jquery-maven</artifactId>
<version>${jquery.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts2-json-plugin.version}</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-beans.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-core.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-context.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-web.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-test.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2-spring-plugin.version}</version>
</dependency>
-->
<!-- junit -->
<!--
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>${struts2-junit-plugin.version}</version>
</dependency>
-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-sitemesh-plugin</artifactId>
<version>${struts2-sitemesh-plugin.version}</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>${sitemesh.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts2-convention-plugin.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
</dependencies>
<build>
<finalName>${final_name}</finalName>
<plugins>
<!-- 強制專案編輯使用的compiler版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- 可產生java source -->
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
-->
<!-- 可產生javadoc 文件 -->
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
-->
<!-- 自動下載相關javadoc 及 source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>false</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
</plugins>
</build>
</project>
本範例使用 xml 來設置對應的 mapper 無使用 Annotation
接下來先建立 MaBatis 所需要的 configuration file
在這邊我先設定為 mybatis-config.xml ,習慣上的放置位置在專案中的 resource 目錄中
mybatis-config.xml
properties 標籤 :放置外部配置
typeAliases 標籤:放置別名
environment 標籤:放置環境設定,以id為辨識名稱,可藉此切換環境設定
transactionManage 標籤:type分為JDBC / MANAGEN,JBDC適用於
Tomcat,MANAGEN 適用於 JBoss, WebLogic or GlassFish 這一類可使用EJB來管理
transaction 的環境
dataSource 標籤:type分為POOLED / UNPOOLED 兩種,POOLED 會建立一個連接池(
pool)來管理connection,而UNPOOLED 則是每次連結接建立一個新的 connection
typeHandlers 標籤:在Mappers xml檔案中的SQL對應的輸入資料屬性,如#{studID}等,
皆可自動對應java 的主要屬性及Wrapper,如String/Integer/enum等,若遇到非上述屬性內
的資料,比如說是一個自訂的Object,則需建立一個 extends BaseTypeHandler <T>
的類別,並複寫當中的Method,再藉由typeHandlers 去配置,讓MyBatis 可以找到對應
的資料類別。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
<!-- 設定jdbc相關配置檔 -->
<properties resource='jdbc.properties'/>
<!-- 設定對應名稱 -->
<typeAliases>
<typeAlias alias="Student" type="com.Models.Student"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Models/StudentMapper.xml"/>
</mappers>
</configuration>
jdbc.properties 一樣放置在 resource 目錄中
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=admin
接著建立 Table Student 所對應的 java bean Student.java
package com.Models;接著建立 Student 對應的 Mapper 檔 StudentMapper.xml
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Student {
private Integer studId;
private String name;
private String email;
private Date dob;
@Override
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd",Locale.TAIWAN);
System.out.println("studId=" + studId + " name=" + name + " email=" + email + " dob=" + sdf.format(dob));
return super.toString();
}
public Integer getStudId() {
return studId;
}
public void setStudId(Integer studId) {
this.studId = studId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}
放置在 resource/Models 中
<?xml version="1.0" encoding="UTF-8"?>接著建立 Interface for StudentMapper.xml StudentMapper.java
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.Models.mappers.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="studId" column="stud_id"/>
<result property="name" column="name"/>
<result property="email" column="email"/>
<result property="dob" column="dob"/>
</resultMap>
<select id="findAllStudents" resultMap="StudentResult">
SELECT * FROM STUDENTS
</select>
<select id="findStudentById" parameterType="int" resultType="Student">
SELECT STUD_ID AS STUDID, NAME, EMAIL, DOB
FROM STUDENTS WHERE STUD_ID=#{Id}
</select>
<insert id="insertStudent" parameterType="Student">
INSERT INTO STUDENTS(STUD_ID,NAME,EMAIL,DOB)
VALUES(#{studId },#{name},#{email},#{dob})
</insert>
</mapper>
當中的三個 Method,正對應 StudentMapper.xml 中各標籤的 id
代表著該而 xml 的 SQL 語法正與該方法對應
parameterType 傳遞的參數型態
resultType 返回的參數型態
resultMap 為一類別返回型態,而其中的 type="Student" Student 正是之前在
mybatis-config.xml 中 typeAlias 標籤所設定的對應資料方便使用別名而不需使用
com.Models.XXX 的全名
package com.Models.mappers;接下來建立一Util MyBatisSqlSessionFactory.java 用來建立 MyBatis 所需要的 SqlSessionFactory
import java.util.List;
import com.Models.Student;
public interface StudentMapper {
ListfindAllStudents();
Student findStudentById(Integer id);
void insertStudent(Student student);
}
package com.Utils;接著建立一Service StudentService.java
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisSqlSessionFactory {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory() {
if(sqlSessionFactory==null) {
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
throw new RuntimeException(e.getCause());
}
}
return sqlSessionFactory;
}
public static SqlSession openSession() {
return getSqlSessionFactory().openSession();
}
}
準備用來存取資料用
package com.Services;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.Models.Student;
import com.Models.mappers.StudentMapper;
import com.Utils.MyBatisSqlSessionFactory;
public class StudentService {
private Logger logger = LoggerFactory.getLogger(getClass());
/**
* 查詢全部學生
* @return
*/
public ListfindAllStudents()
{
SqlSession sqlSession =
MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findAllStudents();
} finally {
//If sqlSession is not closed
//then database Connection associated this sqlSession will not be returned to pool
//and application may run out of connections.
sqlSession.close();
}
}
/**
* studId 尋找學生
* @param studId
* @return
*/
public Student findStudentById(Integer studId)
{
logger.debug("Select Student By ID :{}", studId);
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
return studentMapper.findStudentById(studId);
//上面也可以用下面取代,不須再經過mapper手續
//Student student = (Student)sqlSession. selectOne("com.mybatis3.mappers.StudentMapper.findStudentById", studId);
} finally {
sqlSession.close();
}
}
/**
* 新增學生
* @param student
*/
public void createStudent(Student student)
{
SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();
try {
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
studentMapper.insertStudent(student);
sqlSession.commit();
} finally {
sqlSession.close();
}
}
}
最後使用junit 來做測試 StudentServiceTest.java
package com.Tests;參照資料:
import java.util.Date;
import java.util.List;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import com.Models.Student;
import com.Services.StudentService;
public class StudentServiceTest {
private static StudentService studentService;
@BeforeClass
public static void setup(){
studentService = new StudentService();
}
@AfterClass
public static void teardown(){
studentService = null;
}
@Test
public void testFindAllStudents(){
Liststudents = studentService.findAllStudents();
Assert.assertNotNull(students);
for (Student student : students) {
System.out.println(student);
}
}
@Test
public void testFindStudentById() {
Student student = studentService.findStudentById(1);
Assert.assertNotNull(student);
System.out.println(student);
}
@Test
public void testCreateStudent() {
Student student = new Student();
int id = 5;
student.setStudId(id);
student.setName("student_"+id);
student.setEmail("student_"+id+"gmail.com");
student.setDob(new Date());
studentService.createStudent(student);
Student newStudent = studentService.findStudentById(id);
Assert.assertNotNull(newStudent);
}
}
Java Persistence with MyBatis 3
demo程式(右鍵另開視窗下載)
2014年6月25日 星期三
[Maven]struts2 自己常用的配置 pom.xml -20140626
自己常用的配置檔 pom.xml
備份到blog中
備份到blog中
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>MyBatis_003</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MyBatis_003</name>
<url>http://maven.apache.org</url>
<!-- 設定各dependency 使用的版本 -->
<properties>
<final_name>MyBatis_003</final_name>
<jdk.version>1.6</jdk.version>
<asm.version>3.3.1</asm.version>
<asm-commons.version>3.3.1</asm-commons.version>
<asm-tree.version>3.3.1</asm-tree.version>
<commons-lang3.version>3.3.2</commons-lang3.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-logging.version>1.1.3</commons-logging.version>
<commons-io.version>2.2</commons-io.version>
<freemarker.version>2.3.9</freemarker.version>
<junit.version>4.11</junit.version>
<javassist.version>3.18.1-GA</javassist.version>
<jquery.version>1.8.2</jquery.version>
<log4j.version>1.2.17</log4j.version>
<mysql-connector-java.version>5.1.30</mysql-connector-java.version>
<mybatis.version>3.2.7</mybatis.version>
<ognl.version>3.0.8</ognl.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<struts2-core.version>2.3.16.3</struts2-core.version>
<struts2-dojo-plugin.version>2.3.16.3</struts2-dojo-plugin.version>
<struts2-json-plugin.version>2.3.16.3</struts2-json-plugin.version>
<struts2-spring-plugin.version>2.3.8</struts2-spring-plugin.version>
<struts2-junit-plugin.version>2.3.16.3</struts2-junit-plugin.version>
<!-- 頁面排版用 siteMesh -->
<struts2-sitemesh-plugin.version>2.3.16.3</struts2-sitemesh-plugin.version>
<!-- Annotation 用 -->
<struts2-convention-plugin.version>2.3.16.3</struts2-convention-plugin.version>
<!-- 頁面排版用 siteMesh -->
<sitemesh.version>2.4.2</sitemesh.version>
<slf4j-api.version>1.7.7</slf4j-api.version>
<slf4j-log4j12.version>1.7.7</slf4j-log4j12.version>
<spring-test.version>3.2.0.RELEASE</spring-test.version>
<spring-web.version>3.2.0.RELEASE</spring-web.version>
<spring-context.version>3.2.0.RELEASE</spring-context.version>
<spring-core.version>3.2.0.RELEASE</spring-core.version>
<spring-beans.version>3.2.0.RELEASE</spring-beans.version>
<xwork-core.version>2.3.16.3</xwork-core.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2-core.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>${javassist.version}</version>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>${ognl.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>${xwork-core.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-commons</artifactId>
<version>${asm-commons.version}</version>
</dependency>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-tree</artifactId>
<version>${asm-tree.version}</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-dojo-plugin</artifactId>
<version>${struts2-dojo-plugin.version}</version>
</dependency>
<dependency>
<groupId>com.efsavage.jquery</groupId>
<artifactId>jquery-maven</artifactId>
<version>${jquery.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts2-json-plugin.version}</version>
</dependency>
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-beans.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-core.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-context.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-web.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-test.version}</version>
</dependency>
-->
<!--
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2-spring-plugin.version}</version>
</dependency>
-->
<!-- junit -->
<!--
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>${struts2-junit-plugin.version}</version>
</dependency>
-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-sitemesh-plugin</artifactId>
<version>${struts2-sitemesh-plugin.version}</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
<artifactId>sitemesh</artifactId>
<version>${sitemesh.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts2-convention-plugin.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j-log4j12.version}</version>
</dependency>
</dependencies>
<build>
<finalName>${final_name}</finalName>
<plugins>
<!-- 強制專案編輯使用的compiler版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- 可產生java source -->
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
-->
<!-- 可產生javadoc 文件 -->
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
-->
<!-- 自動下載相關javadoc 及 source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>false</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
</plugins>
</build>
</project>
2014年3月23日 星期日
2014年1月7日 星期二
Eclipse 常用快捷鍵
常用:
ctrl+/ 註解
ctrl+\ 取消註解
ctrl+o 快速搜尋method
ctrl+e 快速切換分頁
ctrl+h 搜尋資料
ctrl+k 搜尋相同資料 +shift(上一個)
ctrl+g 工作中申明
ctrl+. 下一個錯誤
ctrl+1 快速修正
ctrl+q 回到最後編輯行
ctrl+t 查看類別結構
ctrl+m 放大編輯視窗
ctrl+shift+/ 多行註解
ctrl+shift+\ 取消多行註解
ctrl+shift+r 搜尋檔案
ctrl+shift+i 顯示變數資訊
ctrl+shift+g 參照搜尋
ctrl+shift+p 找對應括號
ctrl+shift+l 查看其他快捷鍵
ctrl+shift+f 格式化程式碼
ctrl+shift+o 引入package(all)
ctrl+shift+m 引入package
ctrl+alt+h 查詢引用
ctrl+alt+s svn
alt+up or down 當行上下移
其他:
參照自 Eclipse 快捷鍵大全
Ctrl+1 快速修復(最經典的快速鍵,就不用多說了)
Ctrl+D: 刪除當前行
Ctrl+Alt+↓ 複製當前行到下一行(複製增加)
Ctrl+Alt+↑ 複製當前行到上一行(複製增加)
Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
Alt+↑ 當前行和上面一行交互位置(同上)
Alt+← 前一個編輯的頁面
Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
Alt+Enter 顯示當前選擇資源(工程,or 檔 or檔)的屬性
Shift+Enter 在當前行的下一行插入空行(這時滑鼠可以在當前行的任一位置,不一定是最後)
Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
Ctrl+Q 定位到最後編輯的地方
Ctrl+L 定位在某行 (對於程式超過100的人就有福音了)
Ctrl+M 最大化當前的Edit或View (再按則反之)
Ctrl+/ 注釋當前行,再按則取消注釋
Ctrl+O 快速顯示 OutLine
Ctrl+T 快速顯示當前類的繼承結構
Ctrl+W 關閉當前Editer
Ctrl+K 參照選中的Word快速定位到下一個
Ctrl+E 快速顯示當前Editer的下拉清單(如果當前頁面沒有顯示的用黑體表示)
Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
Ctrl+×(小鍵盤) 展開當前類中的所有代碼
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有衝突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,啟動等操作)
Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)
Ctrl+Shift+F4 關閉所有打開的Editer
Ctrl+Shift+X 把當前選中的文本全部變味小寫
Ctrl+Shift+Y 把當前選中的文本全部變為小寫
Ctrl+Shift+F 格式化當前代碼
Ctrl+Shift+P 定位到對於的匹配符(譬如{}) (從前面定位後面時,游標要在匹配符裡面,後面到前面,則反之)
下面的快速鍵是重構裡面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快速鍵都是Alt+Shift開頭的了)
Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變數和類的Rename,比手工方法能節省很多勞動力)
Alt+Shift+M 抽取方法 (這是重構裡面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
Alt+Shift+C 修改函數結構(比較實用,有N個函式呼叫了這個方法,修改一次搞定)
Alt+Shift+L 抽取本地變數( 可以直接把一些魔法數位和字串抽取成一個變數,尤其是多處調用的時候)
Alt+Shift+F 把Class中的local變數變為field變數 (比較實用的功能)
Alt+Shift+I 合併變數(可能這樣說有點不妥Inline)
Alt+Shift+V 移動函數和變數(不怎麼常用)
Alt+Shift+Z 重構的後悔藥(Undo)
編輯
作用域 功能 快速鍵
全域 查找並替換 Ctrl+F
文字編輯器 查找上一個 Ctrl+Shift+K
文字編輯器 查找下一個 Ctrl+K
全域 撤銷 Ctrl+Z
全域 複製 Ctrl+C
全域 恢復上一個選擇 Alt+Shift+↓
全域 剪切 Ctrl+X
全域 快速修正 Ctrl1+1
全域 內容輔助 Alt+/
全域 全部選中 Ctrl+A
全域 刪除 Delete
全域 上下文資訊 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java編輯器 顯示工具提示描述 F2
Java編輯器 選擇封裝元素 Alt+Shift+↑
Java編輯器 選擇上一個元素 Alt+Shift+←
Java編輯器 選擇下一個元素 Alt+Shift+→
文字編輯器 增量查找 Ctrl+J
文字編輯器 增量逆向查找 Ctrl+Shift+J
全域 粘貼 Ctrl+V
全域 重做 Ctrl+Y
查看
作用域 功能 快速鍵
全域 放大 Ctrl+=
全域 縮小 Ctrl+-
窗口
作用域 功能 快速鍵
全域 啟動編輯器 F12
全域 切換編輯器 Ctrl+Shift+W
全域 上一個編輯器 Ctrl+Shift+F6
全域 上一個視圖 Ctrl+Shift+F7
全域 上一個透視圖 Ctrl+Shift+F8
全域 下一個編輯器 Ctrl+F6
全域 下一個視圖 Ctrl+F7
全域 下一個透視圖 Ctrl+F8
文字編輯器 顯示尺規上下文功能表 Ctrl+W
全域 顯示視圖功能表 Ctrl+F10
全域 顯示系統功能表 Alt+-
導航
作用域 功能 快速鍵
Java編輯器 打開結構 Ctrl+F3
全域 打開類型 Ctrl+Shift+T
全域 打開類型層次結構 F4
全域 打開聲明 F3
全域 打開外部javadoc Shift+F2
全域 打開資源 Ctrl+Shift+R
全域 後退歷史記錄 Alt+←
全域 前進歷史記錄 Alt+→
全域 上一個 Ctrl+,
全域 下一個 Ctrl+.
Java編輯器 顯示大綱 Ctrl+O
全域 在層次結構中打開類型 Ctrl+Shift+H
全域 轉至匹配的括弧 Ctrl+Shift+P
全域 轉至上一個編輯位置 Ctrl+Q
Java編輯器 轉至上一個成員 Ctrl+Shift+↑
Java編輯器 轉至下一個成員 Ctrl+Shift+↓
文字編輯器 轉至行 Ctrl+L
搜索
作用域 功能 快速鍵
全域 出現在檔中 Ctrl+Shift+U
全域 打開搜索對話方塊 Ctrl+H
全域 工作區中的聲明 Ctrl+G
全域 工作區中的引用 Ctrl+Shift+G
文本編輯
作用域 功能 快速鍵
文字編輯器 改寫切換 Insert
文字編輯器 上滾行 Ctrl+↑
文字編輯器 下滾行 Ctrl+↓
文件
作用域 功能 快速鍵
全域 保存 Ctrl+X
Ctrl+S
全域 列印 Ctrl+P
全域 關閉 Ctrl+F4
全域 全部保存 Ctrl+Shift+S
全域 全部關閉 Ctrl+Shift+F4
全域 屬性 Alt+Enter
全域 新建 Ctrl+N
項目
作用域 功能 快速鍵
全域 全部構建 Ctrl+B
原始程式碼
作用域 功能 快速鍵
Java編輯器 格式化 Ctrl+Shift+F
Java編輯器 取消注釋 Ctrl+\
Java編輯器 注釋 Ctrl+/
Java編輯器 添加導入 Ctrl+Shift+M
Java編輯器 組織導入 Ctrl+Shift+O
Java編輯器 使用try/catch塊來包圍 未設置,太常用了,所以在這裡列出,建議自己設置。
也可以使用Ctrl+1自動修正。
運行
作用域 功能 快速鍵
全域 單步返回 F7
全域 單步跳過 F6
全域 單步跳入 F5
全域 單步跳入選擇 Ctrl+F5
全域 調試上次啟動 F11
全域 繼續 F8
全域 使用篩檢程式單步執行 Shift+F5
全域 添加/去除中斷點 Ctrl+Shift+B
全域 顯示 Ctrl+D
全域 運行上次啟動 Ctrl+F11
全域 運行至行 Ctrl+R
全域 執行 Ctrl+U
重構
作用域 功能 快速鍵
全域 撤銷重構 Alt+Shift+Z
全域 抽取方法 Alt+Shift+M
全域 抽取區域變數 Alt+Shift+L
全域 內聯 Alt+Shift+I
全域 移動 Alt+Shift+V
全域 重命名 Alt+Shift+R
全域 重做 Alt+Shift+Y
像 VS 系列一樣的 Content Assist
預設是 " . " 或是自己使用 ALT+ ? 才會出現
要修改設定:
Window -> Preferences -> Java/Editor/Content Assist
在「Auto Activation triggers for java」 從 . 改為
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =.(!+-*/~,[{@#$%^&
如此一來就像VS 一樣打一個字就有囉
相關資源:
Eclipse快捷键 10个最有用的快捷键
Eclipse 開發小技巧 - 程式範本
★ Eclipse 3.0 RC2 熱鍵表 (中英對照版,Default) ★
【上古秘籍】之Eclipse的秘籍
ctrl+/ 註解
ctrl+\ 取消註解
ctrl+o 快速搜尋method
ctrl+e 快速切換分頁
ctrl+h 搜尋資料
ctrl+k 搜尋相同資料 +shift(上一個)
ctrl+g 工作中申明
ctrl+. 下一個錯誤
ctrl+1 快速修正
ctrl+q 回到最後編輯行
ctrl+t 查看類別結構
ctrl+m 放大編輯視窗
ctrl+shift+/ 多行註解
ctrl+shift+\ 取消多行註解
ctrl+shift+r 搜尋檔案
ctrl+shift+i 顯示變數資訊
ctrl+shift+g 參照搜尋
ctrl+shift+p 找對應括號
ctrl+shift+l 查看其他快捷鍵
ctrl+shift+f 格式化程式碼
ctrl+shift+o 引入package(all)
ctrl+shift+m 引入package
ctrl+alt+h 查詢引用
ctrl+alt+s svn
alt+up or down 當行上下移
其他:
參照自 Eclipse 快捷鍵大全
Ctrl+1 快速修復(最經典的快速鍵,就不用多說了)
Ctrl+D: 刪除當前行
Ctrl+Alt+↓ 複製當前行到下一行(複製增加)
Ctrl+Alt+↑ 複製當前行到上一行(複製增加)
Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
Alt+↑ 當前行和上面一行交互位置(同上)
Alt+← 前一個編輯的頁面
Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
Alt+Enter 顯示當前選擇資源(工程,or 檔 or檔)的屬性
Shift+Enter 在當前行的下一行插入空行(這時滑鼠可以在當前行的任一位置,不一定是最後)
Shift+Ctrl+Enter 在當前行插入空行(原理同上條)
Ctrl+Q 定位到最後編輯的地方
Ctrl+L 定位在某行 (對於程式超過100的人就有福音了)
Ctrl+M 最大化當前的Edit或View (再按則反之)
Ctrl+/ 注釋當前行,再按則取消注釋
Ctrl+O 快速顯示 OutLine
Ctrl+T 快速顯示當前類的繼承結構
Ctrl+W 關閉當前Editer
Ctrl+K 參照選中的Word快速定位到下一個
Ctrl+E 快速顯示當前Editer的下拉清單(如果當前頁面沒有顯示的用黑體表示)
Ctrl+/(小鍵盤) 折疊當前類中的所有代碼
Ctrl+×(小鍵盤) 展開當前類中的所有代碼
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有衝突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)
Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,啟動等操作)
Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)
Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)
Ctrl+Shift+F4 關閉所有打開的Editer
Ctrl+Shift+X 把當前選中的文本全部變味小寫
Ctrl+Shift+Y 把當前選中的文本全部變為小寫
Ctrl+Shift+F 格式化當前代碼
Ctrl+Shift+P 定位到對於的匹配符(譬如{}) (從前面定位後面時,游標要在匹配符裡面,後面到前面,則反之)
下面的快速鍵是重構裡面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快速鍵都是Alt+Shift開頭的了)
Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變數和類的Rename,比手工方法能節省很多勞動力)
Alt+Shift+M 抽取方法 (這是重構裡面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
Alt+Shift+C 修改函數結構(比較實用,有N個函式呼叫了這個方法,修改一次搞定)
Alt+Shift+L 抽取本地變數( 可以直接把一些魔法數位和字串抽取成一個變數,尤其是多處調用的時候)
Alt+Shift+F 把Class中的local變數變為field變數 (比較實用的功能)
Alt+Shift+I 合併變數(可能這樣說有點不妥Inline)
Alt+Shift+V 移動函數和變數(不怎麼常用)
Alt+Shift+Z 重構的後悔藥(Undo)
編輯
作用域 功能 快速鍵
全域 查找並替換 Ctrl+F
文字編輯器 查找上一個 Ctrl+Shift+K
文字編輯器 查找下一個 Ctrl+K
全域 撤銷 Ctrl+Z
全域 複製 Ctrl+C
全域 恢復上一個選擇 Alt+Shift+↓
全域 剪切 Ctrl+X
全域 快速修正 Ctrl1+1
全域 內容輔助 Alt+/
全域 全部選中 Ctrl+A
全域 刪除 Delete
全域 上下文資訊 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java編輯器 顯示工具提示描述 F2
Java編輯器 選擇封裝元素 Alt+Shift+↑
Java編輯器 選擇上一個元素 Alt+Shift+←
Java編輯器 選擇下一個元素 Alt+Shift+→
文字編輯器 增量查找 Ctrl+J
文字編輯器 增量逆向查找 Ctrl+Shift+J
全域 粘貼 Ctrl+V
全域 重做 Ctrl+Y
查看
作用域 功能 快速鍵
全域 放大 Ctrl+=
全域 縮小 Ctrl+-
窗口
作用域 功能 快速鍵
全域 啟動編輯器 F12
全域 切換編輯器 Ctrl+Shift+W
全域 上一個編輯器 Ctrl+Shift+F6
全域 上一個視圖 Ctrl+Shift+F7
全域 上一個透視圖 Ctrl+Shift+F8
全域 下一個編輯器 Ctrl+F6
全域 下一個視圖 Ctrl+F7
全域 下一個透視圖 Ctrl+F8
文字編輯器 顯示尺規上下文功能表 Ctrl+W
全域 顯示視圖功能表 Ctrl+F10
全域 顯示系統功能表 Alt+-
導航
作用域 功能 快速鍵
Java編輯器 打開結構 Ctrl+F3
全域 打開類型 Ctrl+Shift+T
全域 打開類型層次結構 F4
全域 打開聲明 F3
全域 打開外部javadoc Shift+F2
全域 打開資源 Ctrl+Shift+R
全域 後退歷史記錄 Alt+←
全域 前進歷史記錄 Alt+→
全域 上一個 Ctrl+,
全域 下一個 Ctrl+.
Java編輯器 顯示大綱 Ctrl+O
全域 在層次結構中打開類型 Ctrl+Shift+H
全域 轉至匹配的括弧 Ctrl+Shift+P
全域 轉至上一個編輯位置 Ctrl+Q
Java編輯器 轉至上一個成員 Ctrl+Shift+↑
Java編輯器 轉至下一個成員 Ctrl+Shift+↓
文字編輯器 轉至行 Ctrl+L
搜索
作用域 功能 快速鍵
全域 出現在檔中 Ctrl+Shift+U
全域 打開搜索對話方塊 Ctrl+H
全域 工作區中的聲明 Ctrl+G
全域 工作區中的引用 Ctrl+Shift+G
文本編輯
作用域 功能 快速鍵
文字編輯器 改寫切換 Insert
文字編輯器 上滾行 Ctrl+↑
文字編輯器 下滾行 Ctrl+↓
文件
作用域 功能 快速鍵
全域 保存 Ctrl+X
Ctrl+S
全域 列印 Ctrl+P
全域 關閉 Ctrl+F4
全域 全部保存 Ctrl+Shift+S
全域 全部關閉 Ctrl+Shift+F4
全域 屬性 Alt+Enter
全域 新建 Ctrl+N
項目
作用域 功能 快速鍵
全域 全部構建 Ctrl+B
原始程式碼
作用域 功能 快速鍵
Java編輯器 格式化 Ctrl+Shift+F
Java編輯器 取消注釋 Ctrl+\
Java編輯器 注釋 Ctrl+/
Java編輯器 添加導入 Ctrl+Shift+M
Java編輯器 組織導入 Ctrl+Shift+O
Java編輯器 使用try/catch塊來包圍 未設置,太常用了,所以在這裡列出,建議自己設置。
也可以使用Ctrl+1自動修正。
運行
作用域 功能 快速鍵
全域 單步返回 F7
全域 單步跳過 F6
全域 單步跳入 F5
全域 單步跳入選擇 Ctrl+F5
全域 調試上次啟動 F11
全域 繼續 F8
全域 使用篩檢程式單步執行 Shift+F5
全域 添加/去除中斷點 Ctrl+Shift+B
全域 顯示 Ctrl+D
全域 運行上次啟動 Ctrl+F11
全域 運行至行 Ctrl+R
全域 執行 Ctrl+U
重構
作用域 功能 快速鍵
全域 撤銷重構 Alt+Shift+Z
全域 抽取方法 Alt+Shift+M
全域 抽取區域變數 Alt+Shift+L
全域 內聯 Alt+Shift+I
全域 移動 Alt+Shift+V
全域 重命名 Alt+Shift+R
全域 重做 Alt+Shift+Y
像 VS 系列一樣的 Content Assist
預設是 " . " 或是自己使用 ALT+ ? 才會出現
要修改設定:
Window -> Preferences -> Java/Editor/Content Assist
在「Auto Activation triggers for java」 從 . 改為
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz =.(!+-*/~,[{@#$%^&
如此一來就像VS 一樣打一個字就有囉
相關資源:
Eclipse快捷键 10个最有用的快捷键
Eclipse 開發小技巧 - 程式範本
★ Eclipse 3.0 RC2 熱鍵表 (中英對照版,Default) ★
【上古秘籍】之Eclipse的秘籍
2013年12月12日 星期四
在Eclipse中,使用JBoss Tools 建立 Hibernate 相關 映射檔案(java,hbm.xml,cfg.xml等)
以下以連結 Oracle 為例,首先建立一Dynamic Web Project
接著加入相關的jar檔,如 Hibernate 及 jdbc for Oracle
接下來在Project上新增一Hibernate Configuration File
選擇存放hibernate.cfg.xml的位置,一般位於 src根目錄
接著進入如下畫面,開始著手相關配置
可以使用Get values from Conntection 來建立(New)配置檔,以後直接選擇配置檔存取即可
選擇資料庫類型,Name及Description 任意,接著點選Next
選擇資料庫版本,一般選Oracle Thin Driver,接著將相關的jdbc jar檔位置設定好
再至Properties 設定相關資料庫屬性,如UserID Password
完成後,會在src的目錄下看到該檔案(hibernate.cfg.xml),但請進入修改依些設定,如下圖
接著開啟一個新的 Perspective --> Hibernate
接下來可以在畫面分頁中查看是否設定正確,若正確,則可以在Database中查看相關Table資料
接下來執行 Hibernate Code Generation Configurations...
開啟畫面如下,可以新增一個自己的配置
【Main】
Console configuration --> 選擇自己的專案名稱
Output directory --> 選擇輸出檔案的目錄,一般設定為 src
Reverse engineer from JDBC Connection --> 請勾選
package --> 選擇要放置升成 java 映射檔的 pagkage 為何
reveng.xml --> 若未建立過,請選擇新增,一般也是設定在 src 的目錄下
【Exporters】
選擇要產出的檔案類型 如 java / hbm.xml映射檔等
其餘的不太需要變更,直接選擇Run,會發現專案目錄已出現我們要的檔案
其餘一些相關設定如以下圖片:
【Table filters】
可選擇要建立相關映射的 Table
選擇產出的 ?.hbm.xml 檔案中,jdbc的資料型別對應Hibernate的類型
將重複無用對應資料刪除
建立要加入該 ?.hbm.xml資料的對應欄位,可順便設定primary key 及 相關產出方式
範例:
<id name="logId"type="long">
<column name="LOG_ID"precision="10" scale="0"/>
<generator class="native">
<param name="sequence">CHECKIN_LOG_AUTO</param>
</generator>
</id>
對照的選項如下:
完成後產出資料後,請記得去將該 ???.hbm.xml 加入 hibernate.cfg.xml 的 mapping 中,如下
修改後的結果,其實可透過介面新增屬性,當然也可以直接對source對修改
如此就可以試著使用該產出的檔案,若有勾選輸出DAO,則可直接拿來運用
但請記得修改當中的 getSessionFactory()
protected SessionFactory getSessionFactory() {
try {
//return (SessionFactory) new InitialContext().lookup("SessionFactory");
return (SessionFactory)new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
log.error("Could not locate SessionFactory in JNDI", e);
throw new IllegalStateException(
"Could not locate SessionFactory in JNDI");
}
}
如此一來才能順利取得 hibernate.cfg.xml 的相關配置資料
By William Hsu 2013.12.12
參考資料:
eclipse利用Hibernate Tools生成Hibernate Mapping文件及PO类
eclipse下wtp+HibernateTools開發筆記
Hibernate 學習筆記 - openhome.cc
參考資料:
eclipse利用Hibernate Tools生成Hibernate Mapping文件及PO类
eclipse下wtp+HibernateTools開發筆記
Hibernate 學習筆記 - openhome.cc
訂閱:
文章 (Atom)























