본문 바로가기
to be 개발자

PostgreSQL 공부중 - 기초 시퀀스 생성 / 서브쿼리 붙이는 법 / 마이바티스 설정

by 아셀acell 2020. 12. 23.
반응형

 

show search_path

해서 자신이 속한 search_path가 아니면 alter 문으로 수정 

 

alter user postgres set search_path='public';

사용자 postgres의 서치패스 설정을 public으로 한다

(기본이 public 근데 내가 바꾸는 바람에 안됐던건데 

이게 껏다 켜야 바뀐게 뜨기 때문에 이걸 몰라서 계속 

바꾸고 껏다켜서 다시 바꾸고 해보고 안되고 이런 엇갈림을 계속 겪은 것)

 

이후 select 문 으로 해당 서치패스 속 테이블 열면 열린다 

select * from study10071600;

 

insert into study10071600 values

(nextval('st_seq'),'보라',10,now()),

(nextval('st_seq'),'덕선',20,now()),

(nextval('st_seq'),'정봉',30,now()),

(nextval('st_seq'),'정환',40,now()),

(nextval('st_seq'),'선우',50,now());

now()는 오라클에서 SYSDATE 같은 것 

 

alter table study10071600 alter column stno set default nextval('st_seq');

Stno에 시퀀스 기본 세팅 

 

alter table study10071600 alter column stdate set default now();

Stdate에 현재시간 기본 세팅 

 

이렇게 세팅해놔서 insert 식 간단해짐 

insert into study10071600(stname,stscore) values('재희',24);

 

delete from study10071600 where stname != '보라'; 

타임스탬프 다르게 줄려고 네개 다시 삭제 

 

update study10071600 set stscore = 10 where stname = '덕선';

점수 같으면 먼저 등록한 사람이 위에 가도록 같은 점수로 변경 

 

select row_number() over(order by stscore desc, stdate) as rnum, stname, stscore, 

to_char(stdate, 'yyyy-mm-dd hh:mi:ss') as stdate, stno

from study10071600;

점수가 큰 순으로 나열(내림차순) / 점수가 같으면 먼저 등록한 사람 순(오름차순 asc)

 

select max(stno) from study10071600;

가장 최근에 들어간 stno 번호 찾아오기 (방금 자기점수에 이름써서 입력한 사람임)

 

select rnum

from (select row_number() over(order by stscore desc, stdate) as rnum, stname, stscore, 

to_char(stdate, 'yyyy-mm-dd hh:mi:ss') as stdate, stno

from study10071600) as st

where stno = (select max(stno) from study10071600);

위 stno 기준으로 해당 사람 랭크 가져오기 

 

From에 붙은 서브쿼리에 이름 안붙이면 오류남

ERROR: 오류:  FROM 절 내의 subquery 에는 반드시 alias 를 가져야만 합니다



Http 500오류 

https://namubada.net/306

Bean이 없다 = root-context에서 id를 안만들어서. 

 

마이바티스 설정을 바닐라erp참고해서 고쳤다

<!-- mybatis setting -->

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >

<property name="dataSource" ref="dataSource" />

<property name="configLocation"

                              value="classpath:mybatis-config.xml"/>

        <property name="mapperLocations" value="classpath*:META-INF/mapper/**/*_SQL.xml"/>

</bean>

<!-- MyBatis 접근 객체 -->

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">

<constructor-arg ref="sqlSessionFactory" />

</bean>

Root-context에 마이바티스 설정!

 

그리고 log4j.xml에서 계속 DTD 없다고 오류나서 

https://blog.itpaper.co.kr/spring-log4j-error/

상단 두줄을 이 사이트대로 바꿨더니 빨간줄이 사라졌다.

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">



Mybatis-config에는 큰 설정은 없다.

 

 

<?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>

<typeAliases>

<typeAlias alias="hashmap" type="java.util.HashMap" />

</typeAliases>

</configuration>



이러고 돌리니까 돌아는 갔는데 db로 안넘어감 

 

오류 

 creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]

 

Failed to parse mapping resource: 'file [C:\Users\w\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\TestSpring\WEB-INF\classes\sql\sql.xml]';

 

서블렛컨텍스트에서 

<context:component-scan base-package="com.wj.post." />를 

 

<context:component-scan base-package="com.wj.post.*" />로 고쳐봄 

 

그래도 안됨 ㅠㅠ

 

 

 

728x90
반응형
LIST

댓글