Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
비전공자의 IoT 국비 교육 수강일지 Day_70 본문
728x90
BootSample 프로젝트
서버 실행 후 페이지 접속
주요 설정 application.properties
=> 스프링 레거시 프로젝트에서 servlet-context.xml 있는 설정을 application.properties 여기서 설정
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
요청 후 링크로 접속
main.jsp 작성
RController 생성 후 Member테이블(controller 패키지) 생성
com.smhrd.myapp.database 패키지의 DataBaseConfigMyBatis에 추가!
더보기package com.smhrd.myapp.database; import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; @Configuration //설정파일 @EnableTransactionManagement //트랜잭션 관리 @MapperScan(basePackages = "com.smhrd.myapp.mapper") public class DataBaseConfigMyBatis { @Bean public DataSource batisDataSource() { HikariConfig dataSourceConfig = new HikariConfig(); dataSourceConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver"); dataSourceConfig.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSourceConfig.setUsername("hr"); dataSourceConfig.setPassword("hr"); dataSourceConfig.setMaximumPoolSize(10); dataSourceConfig.setMinimumIdle(5); dataSourceConfig.setMaxLifetime(1200000); dataSourceConfig.setConnectionTimeout(20000); dataSourceConfig.setIdleTimeout(300000); return new HikariDataSource(dataSourceConfig); } //데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체 @Bean(name= "batisSqlSessionFactory") public SqlSessionFactory batisSqlSessionFactory(@Qualifier("batisDataSource") DataSource batisDataSource, ApplicationContext applicationContext) throws Exception { SqlSessionFactoryBean sqlSession = new SqlSessionFactoryBean(); sqlSession.setDataSource(batisDataSource); sqlSession.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml")); //mybatis-config.xml의 경로 sqlSession.setMapperLocations(applicationContext.getResources("classpath:/com/smhrd/myapp/mapper/MemberMapper.xml")); //쿼리문을 관리하는 mapper파일의 경로 return sqlSession.getObject(); } //마이바티스 스프링 연동모듈의 핵심 @Bean(name = "batisSqlSessionTemplate") public SqlSessionTemplate batisSqlSessionTemplate(SqlSessionFactory batisSqlSessionFactory) throws Exception { return new SqlSessionTemplate(batisSqlSessionFactory); } }
pom.xml에 추가!
mvnrepository 링크
더보기<!-- HIKARI CP 커넥션 풀 사용 위한 스타터 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 오라클 드라이버 --> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc8</artifactId> <scope>runtime</scope> </dependency> <!-- class 파일로 configuration --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency>
MemberMapper 인터페이스 작성(com.smhrd.myapp.mapper)
resources폴더에 폴더 생성
MemberMapper.xml 생성
mybatis-config.xml 생성
링크에서 설정 필요한 옵션 값 추가 가능
더보기<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- https://mybatis.org/mybatis-3/ko/configuration.html --> <settings> <setting name="callSettersOnNulls" value="true"/> </settings> </configuration>
MemberService 작성(com.smhrd.myapp.service 패키지)
RController 작성(com.smhrd.myapp.controller)
=> RequestMapping( ) 안에 경로 적을 때 ""으로 작성('' 작성 시 오류)
버튼 작성 후 함수 작성
RController dataFindAllJPA() 메서드 작성
MemberService dataFindAllJPA( ) 메서드 작성
=> MemberRepo 추가!
pom.xml 작성
<!-- JPA --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
DataBaseConfigJPA 생성(com.smhrd.myapp.database; )
더보기package com.smhrd.myapp.database; import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.transaction.PlatformTransactionManager; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; @Configuration //configuration annotation @EnableJpaRepositories( basePackages="com.smhrd.myapp.repo", //repository를 관리할 패키지 명시 entityManagerFactoryRef = "entityManagerFactory", //EntityManagerFactory transactionManagerRef = "transactionManager") // transactionManager public class DataBaseConfigJPA { private static final String DEFAULT_NAMING_STRATEGY = "org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy"; @Bean @Primary //해당 Bean을 우선적으로 선택하도록 하는 annotation public DataSource defaultDataSource() { HikariConfig dataSourceConfig = new HikariConfig(); dataSourceConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver"); dataSourceConfig.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSourceConfig.setUsername("hr"); dataSourceConfig.setPassword("hr"); dataSourceConfig.setMaximumPoolSize(10); dataSourceConfig.setMinimumIdle(5); dataSourceConfig.setMaxLifetime(1200000); dataSourceConfig.setConnectionTimeout(20000 ); dataSourceConfig.setIdleTimeout(300000); return new HikariDataSource(dataSourceConfig); } //SessionFactory를 생성 @Bean(name = "entityManagerFactory") @Primary public LocalContainerEntityManagerFactoryBean entityManagerFactory( EntityManagerFactoryBuilder builder) { Map<String, String> propertiesHashMap = new HashMap<>(); propertiesHashMap.put("hibernate.physical_naming_strategy",DEFAULT_NAMING_STRATEGY); LocalContainerEntityManagerFactoryBean rep = builder.dataSource(defaultDataSource()) .packages("com.smhrd.myapp.domain") //domain을 관리할 패키지 경로 명시 (domain = DO 파일) .properties(propertiesHashMap) .build(); return rep; } //트랜잭션 관리 @Primary @Bean(name = "transactionManager") PlatformTransactionManager transactionManager( EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(entityManagerFactory(builder).getObject()); } }
Member 클래스 수정(com.smhrd.myapp.domain)
=> import시 persistence!!
MemberRepo 인터페이스 생성(com.smhrd.myapp.repo)
=> JpaRepository 상속받기!
멤버 리스트 가져오기(JPA) 버튼 클릭 시 콘솔 창에 출력
id가 admin인 회원 불러오기
RController findAdmin( ) 메서드 작성
MemberService에 findAdmin( ) 메서드 작성
MemberRepo에 findAdmin 작성
=> @Param import ibatis, @Query import jpa
=> 테이블명이 아니라 Member 클래스 명과 일치!!(대소문자 구분)
Pyton lib
# 새로운 컬럼 생성
# 변수[컬럼이름] = 값
# 데이터 프레임 슬라이싱 1
=> 0 포함 2 미포함
=> 서울, 부산 = index, 2015,2010,2005 컬럼
# 데이터 프레임 슬라이싱 2
# 행과 열을 한 번에 인덱싱/슬라이싱 하는 함수가 필요
# loc : index의 값(문자)을 사용
# iloc : index의 번호(정수)를 사용
# 변수. 인덱서[ 행, 열 ]
# 인덱서[행] : 해당 행 데이터 출력
# loc 활용
# iloc 활용
실습 1
- population_number.csv
파일 불러오기!
=> pd.read_csv('파일명', '인코딩', 인덱스컬럼='' )
population_number= pd.read_csv('population_number.csv',encoding='euc-kr', index_col='도시')
# 각각의 값이 나온 횟수 세어주기!
=> 중복 값이나 빈도수 확인할 때 사용
#2010 컬럼 값의 빈도수
=> 결측치는 카운팅 X
정렬(sort)
# sort_index : 인덱스 값을 기준으로 정렬
# sort_values : 데이터 값을 기준으로 정렬
=> ascending 오름차순 (True), 내림차순 (False)
데이터 값 정렬
=> by = 컬럼값
boolean 인덱싱
# 2015년도 인구가 250만 이상인 데이터 가져오기
# 1. 조건에 쓰일 데이터 (인덱싱)
# 2. 판별 (boolean)
# 3. 조건에 따라 데이터 가져오기 (불리언 인덱싱)
실습 2
파일 불러오기
# 학급별 총계
# 과목별 총계
=> axis는 축 / axis=0 기본값!
# 합계 컬럼 추가하기
1. 과목별 합계 연산하기
2. 연산한 데이터로 컬럼 추가하기 (인덱싱)
3. score 변수 확인하기
# 학급별 순위
# 1. 학급별 총합
# 2. 정렬
# 3. 내림차순
# 평균 컬럼 추가하기
# 반 평균 컬럼 추가하기
# 최댓값, 최솟값 구하기
# 과목별 최댓값과 최솟값의 차이 1
# 과목별 최대값과 최소값의 차이 2
DataFrame 병합
- concat
- merge
# 데이터 생성
# concat 함수 사용해서 데이터 병합
# 데이터 생성
# join 속성
# axis=1, axis=0
- outer : 합집합, 기본값
- inner : 교집합, 합치는 데이터들이 동일하게 가지고 있는 기준만 출력
728x90
'비전공자의 코딩일지' 카테고리의 다른 글
비전공자의 IoT 국비 교육 수강일지 Day_72 (0) | 2022.03.31 |
---|---|
비전공자의 IoT 국비 교육 수강일지 Day_71 (0) | 2022.03.30 |
비전공자의 IoT 국비 교육 수강일지 Day_69 (0) | 2022.03.28 |
비전공자의 IoT 국비 교육 수강일지 Day_68 (0) | 2022.03.25 |
비전공자의 IoT 국비 교육 수강일지 Day_67 (0) | 2022.03.24 |
Comments