Fullstack-Study-241204-250625

커리큘럼(12-30/변경)

01. Java
02. git
03. Database 
04. Jsp [Server]

05. HTML,CSS 
07. JS
06. 미니프로젝트-2W

08. SpringFramework , SrpingBoot (v)
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)

스프링 부트

JPA(Java Persistence API)

JPQL

@Query("select m from Memo m order by m.mno desc")
List<Memo> getList();

@Query("select m from Memo m where m.mno >= :num order by m.text desc")
List<Memo> getList2(@Param("num") Long num);

@Query("select m.mno, m.writer from Memo m where m.writer like %:search%")
List<Object[]> getList3(@Param("search") String param);
//JPQL - update구문
// update구문 테이블명 set값 value 값
@Transactional
@Modifying
@Query("update Memo m set m.writer = :a where m.mno = :b")
int updateMemo(@Param("a") String writer, @Param("b") Long mno);

@Transactional
@Modifying
@Query("update Memo m set m.writer = :#{#a.writer}, m.text= :#{#a.text} where m.mno = :#{#a.mno }")
int updateMemo2(@Param("a") Memo memo);

// delete
@Transactional
@Modifying
@Query("delete from Memo m where m.mno= :a")
int deleteMemo(@Param("a") Long mno);
@Query("select m from Memo m where m.mno >= :a")
Page<Memo> getListPage(@Param("a") Long mno, Pageable pageable);

네이티브쿼리

// 네이티브쿼리 - jpql이 아닌 sql문을 직접 날리는 방법
@Query(value = "select * from memo where mno = ?",nativeQuery = true)
Memo getNative(Long a);

구현체 만들기

@Override
@Transactional //insert, delete에서 꼭 적어야함
public int updateTest(String writer, long mno) {
	
	String sql = "update Memo m set m.writer = :a where m.mno = :b";
	
	Query query = entityManager.createQuery(sql); //javax타입
	query.setParameter("a", writer); //파라미터 저장
	query.setParameter("b", mno); //파라미터 저장
	int result = query.executeUpdate(); //insert, delete는 execueteUpdate()
	
	return result;
}
@Override
public List<Memo> mtoJoin1(Long mno) {
    // inner조인 - 연결되는 데이터가 없으면 안나옴
    //String sql = "select m from Memo m inner join m.member x where m.mno >= :mno";
    String sql = "select m from Memo m left join m.member x where m.mno >= :mno";
    TypedQuery<Memo> query = entityManager.createQuery(sql,Memo.class);
    query.setParameter("mno", mno);
    return query.getResultList();
}