Mybatis @Param 사용

1. Mybatis를 이용해서 파라미터값을 이용할 때 아래와 같이 하나의 값이면 이름을 사용하면 된다. 객체를 이용한 파라미터는 "객체.상세" 식으로 사용하면 된다. @Insert("INSERT INTO ${tableName} (log_time, gateway_id, sensor_node_id, sensor_id, sensor_value, alarm_flag, raw_value)" + " VALUES (#{sensor.sensingTime}, #{sensor.gatewayId}, #{sensor.sensorNodeId}, #{sensor.id}, #{sensor.sensorValue}, #{sensor.alarmFlag}, #{sensor.rawValue})") void insert(@Param("tableName") String tableName, @Param("sensor")Sensor log); 2. Mybatis에서 @Update를 이용해서 CREATE문을 사용할 수 있다.

Mysql - concat

Table에 2개의 필드를 이용해서 하나의 필드를 생성할 수 있다. 고유아이디가 필요할 경우 사용하면 편리하다. 아래는 예제이다. select concat(node_id, '-', sensor_type) as sensor_id, tb_sensor.* from  `krri`.`tb_sensor`;

Mysql Auto increment 사용 주의사항

Mysql 사용시 오토 인크리먼트가 되면 마지막 아이디를 사용자에게 알려주기 위해서 아래와 같은 문장으로 마지막 아이드르 받아온다.(Mybatis) <selectKey resultType="_int" keyProperty="id" order="AFTER" >             SELECT LAST_INSERT_ID()         </selectKey> 이 때 주의 사항이 생긴다. 오토 인크리먼트를 사용하지 말아야 할 곳에서 사용하게 되면 PK값을 쓰레기 값으로 준다. 이거 조심해야것다

배열 값 구조체에 넣기

이거 C로 프로그램 짜면서 자주 햇갈린다 struct { uint8 name; uint8 age; }info_t; 라는 구조체가 있고 배열 data[2]={"홍길도",17};의 값을 구조체 넣을려면 info_t *info; info = (info_t*) data; 이렇게 사용해주면 많은 구조체에 다량의 배열값을 넣을 때 유용하다. 하지만 위와 같은 방법은 로컬 함수에서 모든 일(?)이 있을 때는 유리하지만 전체 프로그램에서 공유해서 사용하는 값이라면 스텍에 겹쳐지면 지워질 수 있기 때문에 전체에서 사용하는 값이라면 맵 카피와 같은 방법을 사용해야 한다. memset(&info, data, sizeof(inof)); 와 같이 사용해야 한다. 자주 까먹는데 왜자꾸 까먹는건지 아니면 이해를 잘못해서 자꾸 까먹나?

MSP430F5438 clk, uart, timer 초기화

MSP430을 사용하면서 혹시모를 삽질을 위해 초기화에서 주의해야 할 점을 몇 가지!! 1. clk를 초기화 할 때   unsigned int i;   P5SEL |= 0x06;                            // Port select XT2                  UCSCTL1 = 1;   UCSCTL6 = XCAP_3;   UCSCTL8 = 0;      for(i=0; (i<0x7FFF) && (SFRIFG1&OFIFG); i++) {           UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags           SFRIFG1 &= ~OFIFG;   }      UCSCTL6 &= ~XT2DRIVE0;   UCSCTL4 = SELA__XT1CLK | SELS__XT2CLK | SELM__XT2CLK; // ACLK(XT1),     MCLK/SMCLK(XT2)   UCSCTL5 = DIVS_3; // MCLK (20M), SMCLK(2.5M), ACLK(32.768K) msp430에서 clk를 초기화 시키지 않으면 모든게 동작하지 않는다. 2. uart RX interrupt 초기화 할 때     UCA1IE |= UCRXIE;      를 해야줘야 인터...

mysql Auto increment

mysql에서 Auto increment로 설정된 테이블에서 마지막으로 설정된 값을 불러올 때 다음과 같이 사용한다. <selectKey resultType="String" keyProperty="id" >  SELECT LAST_INSERT_ID() as id </selectKey>

cc2530 Z-stack uart 설정 주의

예를 들어 baud가 1200 이고 8bit transfer, one stop bit, even parity를 사용하는 경우라면 z-stack에서 _hal_uart_isr.c의 설정에서 아래와 같이 설정해야 한다. UxUCR = UCR_STOP | UCR_PARITY | UCR_D9 | UCR_BIT9; 이부분을 설정하면서 삽질했던 부분이 UCR_BIT9 설정이 분명 데이터 시트상에는 0일때 8bit transfer라고 되어 있는데 1로 설정했을 때 8bit transfer로 동작한다. 내가 잘못 이해한건지 아니면 데이터 시트가 잘못된건지 이건 이종간의 장비가 통신을 할 때 꼭 설정해야 하는 부분인데 이것 때문에 삽질을 했다.