package com.learningjava; import java.time.LocalDate; import java.time.Month; import java.time.temporal.ChronoUnit; public class TestLocalDate { public static void main(String[] args) { LocalDate toDay = LocalDate.now(); // today -> instance /object System.out.println(toDay);//วันปัจจุบัน yyyy-mm-dd System.out.println(toDay.getDayOfWeek());//วันปัจจุบันวันอะไร เช่น MONDAY,Tuesday TUESDAY,WEDNESDAY System.out.println(toDay.getDayOfMonth());//วันปัจจุบัน เป็นวันที่เท่าไรของเดือน System.out.println(toDay.getDayOfYear());//วันปัจจุบัน เป็นวันที่เท่าไรของปี //สมมุติว่าเราต้องการวันที่ 99 ของปี 2015 LocalDate day99 = LocalDate.ofYearDay(2015,99); System.out.println("วันที่ 99 ของปี 2015 คือ "+day99);//วันที่ 99 ของปี 2015 //สมมุติว่าเราต้องการหาจำนวณวันที่จะถึงสิ้นปี ของปี 2015 LocalDate endYear = LocalDate.of(2015, Month.DECEMBER,31); System.out.println("อีกกี่วันจะถึงสิ้นปี "+toDay.until(endYear,ChronoUnit.DAYS)); //สมมุติว่าเราต้องการหาวันเกิดของเรา LocalDate birthDate = LocalDate.of(1989, Month.APRIL,30);//ปี,เดือน,วันที่ System.out.println("จำนวนวันนับตั้งแต่วันเกิด "+birthDate.until(toDay,ChronoUnit.DAYS)); System.out.printf("อายุ %d ปี %d เดือน %d วัน", birthDate.until(toDay).getYears(), birthDate.until(toDay).getMonths(), birthDate.until(toDay).getMonths()); } }
วันอังคารที่ 1 ธันวาคม พ.ศ. 2558
LocalDate Java 8
วันจันทร์ที่ 16 พฤศจิกายน พ.ศ. 2558
Spring Batch TaskScheduler โดย Spring boot
Spring Batch TaskScheduler มีหน้าที่ทำให้การกระทำอย่างใดอย่างหนึ่งสั่งให้ทำงาน ณ ช่วงเวลาที่เรากำหนดได้ ไม่ว่าจะทำทุกๆ 5 นาที ทำทุกๆ เทียงคืนของวันนั้นก้ได้ตามสบายใจที่กำหนดได้เลย หรือซึงโปรแกรมเมอร์ส่วนใหญ่คุ้นเคยกันดีนั้น คือ Run batch file ตามเวลาที่กำหนดนั้นเอง โดยหลักการทำงานของเจ้าตัว TashkScheduler อยู่ในรูแบบของ Thread (เทรด) ซึงมันจะสแกนมีช่วง Thread นั้นๆ มันก้ทำงาน
โครงสร้างไฟล์โปรแกรม
ไฟล์ pom.xml เพิ่ม dependencies ดังนี้
org.springframework.boot spring-boot-starter-batch org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-starter-test test
- เพิ่ม annotation @ComponentScan เพื่อ scan package
- เพิ่ม annotation @EnableSchecduling เพื่อเปิดใช้งาน Schecduling
วันเสาร์ที่ 15 สิงหาคม พ.ศ. 2558
คำสั่ง Git basic
git clone url
เป็นคำสั่งดึงข้อมูลจาก Remote repository มาไว้ในเครื่อง local
git branch
เป็นคำสั่งดู branch ปัจจุบัน
git branch namebranch
เป็นคำสั่งกรณีต้องการแตก branch
git branch -d namebranch
เป็นคำสั่งกรณีต้องการลบ branch
git checkout namebranch
เป็นคำสั่งสลับ branch เมื่อต้องการว่าเราอยู่ที่ branch ไหน
git checkout -b namebranch
เป็นคำสั่งสร้าง branch พร้อมสลับไปยัง branch ที่สร้างใหม่
git status
เป็นคำสั่งตรวจสอบสถานะที่มีการเปลี่ยนแปลงทั้งเครื่อง local และบน Remote repository
git add ..
เป็นคำสั่งเพิ่มไฟล์หรือไฟล์ที่เราแก้ไขเพื่อที่จะเอาขึ้น Remote repository
git commit -m"comment"
เป็นคำสั่งการยืนยันการเพิ่มไฟล์พร้อมใส่ comment
git pull origin namebranch
เป็นคำสั่งดึงข้อมูลลงมาจาก Remote repository มาไว้ในเครื่อง local
git push origin namebranch
เป็นคำสั่งส่งข้อมูลจากเครื่อง local ไป update บน Remote repository
git fetch origin master
เป็นคำสั่งดึงไฟล์ทั้งหมดเฉพาะ branch ที่เราต้องการมาไว้บนเครื่อง local
git merge namebranch
เป็นคำสั่ง merge ไฟล์โดยระบุ branch ที่ต้องการ merge
git log
เป็นคำสั่งดู log การทำงานทั้งหมด
git rm -r sub_folder
เป็นคำสั่งใช้ลบไฟล์หรือ folder
วันพฤหัสบดีที่ 23 กรกฎาคม พ.ศ. 2558
Hibernate Framework
- Hibernate Framework ซึ่งเป็น ORM หรือ Object/Relational Mapping ที่มีความสามารถในการช่วยจัดการกับโปรแกรมที่อยู่ในรูปออบเจ็กต์ ให้สามารถใช้งานกับระบบฐานข้อมูลได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็น การสร้างตาราง การเพิ่ม ลบ แก้ไข ค้นหาข้อมูลต่างๆ ในฐานข้อมูล อาทิ MySQL, MSSQL, Oracle และอื่นๆ ซึ่งมีการใช้งานกันอย่างแพร่หลาย
วันจันทร์ที่ 13 กรกฎาคม พ.ศ. 2558
คำสั่ง INSERT SELECT
insert select คือ เป็นคำสั่งที่สามารถคัดลอกข้อมูลจากตารางหนึ่งไปแทรกลงตารางที่มีอยู่ได้โดยต้องมีโครงสร้างเหมือนกัน
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องโครงสร้างเท่ากัน)
insert into member2 select * from member1
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องมีโครงสร้างเท่ากัน) โดยมีเงื่อนไข fname เท่ากับ m1
insert into member2 select * from member1 where fname='m1'
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์
insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์และมีเงื่อนไข fname เท่ากับ m1
insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1 where fname='m2'
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องโครงสร้างเท่ากัน)
insert into member2 select * from member1
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 (ต้องมีโครงสร้างเท่ากัน) โดยมีเงื่อนไข fname เท่ากับ m1
insert into member2 select * from member1 where fname='m1'
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์
insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1
- ต้องการ insert ข้อมูลลง member2 จากข้อมูล member1 โดยระบุฟิวส์และมีเงื่อนไข fname เท่ากับ m1
insert into member2 (fname,lname,nicknam) select fname,lname,nicknam from member1 where fname='m2'
Spring framework ความรู้เบื่องต้น
Spring เป็น framework ของ JEE (Java Enterprise Edition ) พัฒนาขึ้นโดย Rod Johnson ซึ่งหลังได้มีกลุ่มนักพัฒนาเข้ามาช่วยพัฒนาโดยตั้งเป็นกลุ่ม community ขึ้น สำหรับนักพัฒนาสาย java ซึ่งปัจจุบันนิยมมากของขา java dav เพราะมีความสามารถหลากหลาย ดังนี้
- ไม่ว่าเป็นรูปแบบการเขียน code ที่สั้นขึ้นถ้าเทียบกับ framework ตัวอื่นๆ โดยมีการร่วมเอาหลายๆ อย่างที่ส่วนมากคนเขียนซ้ำๆ เอามาเรียกใช้งาน
- สามารถใช้ร่วมกับ framework ตัวอื่นเช่น struts,jsf,ejbได้โดย configuration ในรูบแบบของ xml หรือ แบบ java class
- สามารถจัดการ transaction ได้ดี
- สามารถจัดการ security ได้ดี
- สมารถจัดการแบ่งส่วนอย่างชัดเจน 3 Layer ตาม M-V-C Design Pattern
- สามารถเขียนเทสแยกส่วนได้โดยใช้ jUnit
- สามารถเชื่อมต่อฐานข้อมูลแบบ ORM (Object Relational Mapping) โดยสามารถเลือกใช้ Hibernate, JPA ,iBatis และค่ายอื่นๆ ได้
- สามารถใช้ JDBC Tamplate ได้ดี
- สามารถจัดการ Data เบื่องต้นได้เช่น CRUD เพื่อลดการเขียนซ้ำซ้อนโดยใช้ Spring Data JPA
- รองรับการทำงาน Webflow
- รองรับการทำงาน WebSocket
- รองรับการทำงาน WebService , Mail
- สนับสนุบการทำ IoC และ DI (Dependency Injection) คือสามารถฉีด Bean เข้าส่วนต่างๆได้
- สามารถใช้แท็ก Annotation ได้แทนรูปแบบ xml ได้ง่ายขึ้น
- สมารถจัดการแบ่งส่วนอย่างชัดเจน 3 Layer ตาม M-V-C Design Pattern
- สามารถเขียนเทสแยกส่วนได้โดยใช้ jUnit
- สามารถเชื่อมต่อฐานข้อมูลแบบ ORM (Object Relational Mapping) โดยสามารถเลือกใช้ Hibernate, JPA ,iBatis และค่ายอื่นๆ ได้
- สามารถใช้ JDBC Tamplate ได้ดี
- สามารถจัดการ Data เบื่องต้นได้เช่น CRUD เพื่อลดการเขียนซ้ำซ้อนโดยใช้ Spring Data JPA
- รองรับการทำงาน Webflow
- รองรับการทำงาน WebSocket
- รองรับการทำงาน WebService , Mail
- สนับสนุบการทำ IoC และ DI (Dependency Injection) คือสามารถฉีด Bean เข้าส่วนต่างๆได้
- สามารถใช้แท็ก Annotation ได้แทนรูปแบบ xml ได้ง่ายขึ้น
Oracle Query date to char
สำหรับฟิวส์ที่มี data type เป็น date เช่น birthday(date) เราสามารถแปลงเป็น varchar ได้เพื่อที่จะนำไป Query ตามที่ต้องการได้
- ตัวอย่างกรณี Table customer อยากได้เงื่อนไขวันเกิดเฉพาะในปี 2015
select * from customer where to_char(birthday, 'yyyy') = '2015'
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดในรูปแบบไทย 14/07/2558
select to_char(birthday, 'dd/mm/yyyy','NLS_CALENDAR=''THAI BUDDHA') as birthday from customer
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดเวลาในรูปแบบ 2014/04/16 13:37:00
select to_char(birthday, 'yyyy/mm/dd HH24:mi:ss') as birthday from custome
* ตัวอย่างนำมาเขียนบางส่วนผู้อ่านสามารถนำไปประยุกต์เพิ่มเติมได้
- ตัวอย่างกรณี Table customer อยากได้เงื่อนไขวันเกิดเฉพาะในปี 2015
select * from customer where to_char(birthday, 'yyyy') = '2015'
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดในรูปแบบไทย 14/07/2558
select to_char(birthday, 'dd/mm/yyyy','NLS_CALENDAR=''THAI BUDDHA') as birthday from customer
- ตัวอย่างกรณี Table customer อยากได้วันเดือนปีเกิดเวลาในรูปแบบ 2014/04/16 13:37:00
select to_char(birthday, 'yyyy/mm/dd HH24:mi:ss') as birthday from custome
* ตัวอย่างนำมาเขียนบางส่วนผู้อ่านสามารถนำไปประยุกต์เพิ่มเติมได้
สมัครสมาชิก:
บทความ (Atom)