2018년 5월 27일 일요일

Canvas

こちらのタグがサポートされない場合、こちらの文字が表示されます
こちらのタグがサポートされない場合、こちらの文字が表示されます

確認内容

http://utk-unm.blogspot.jp/2014/07/webrtc.html

・webRTC
Web RealTime Communication

WebRTCでは、ブラウザ同士の直接接続をネゴシエートするために、事前にお互いの情報をやりとりする必要があるため、サーバは必要です。
お互いの情報を作成/チェックするために、STUNやTURN、ICEなどのIRC関連プロトコルを利用しており、これらのサーバも必要になります。
PCのカメラやマイクから取得した画像や音声のストリーミングだけでなく、DataChannelを利用してピア接続上で双方向通信が行えます。

ORACLE

http://www.atmarkit.co.jp/fdb/ref/ref_oracle/privi.html#01


-------------------------------------------
DB接続設定ファイル情報
-------------------------------------------
tnsname.ora

ORCL1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl1.japan.com)
    )
  )
-------------------------------------------



http://blog.naver.com/gmjroc/40111049928

- 오라클 서버
   :오라클 서버(Oracle Server)는 여러 개의 물리적인 파일들, 메모리, 프로세스들로 구성된다. 우리는 오라클을 서버용으로 설치했으므로, 여러분의 컴퓨터가 오라클 서버가 된다. 오라클 서버는 오라클 데이터 베이스와 인스턴스로 구성된다.

- 오라클 데이터베이스
   :설치 초기에 전역 데이터베이스 이름을 입력하여 생성한 시작 데이터베이스가 여기서 말하는 데이터베이스가 된다. 사실 '오라클 데이터베이스(Oracle Database)'는 대략 세 가지 정도의 의미로 사용된다.
첫째, 오라클 데이터베이스 관리스스템에 의해 관리되는 데이터들
둘째, 오라클 데이터베이스 시스템 그 자체
셋째, 데이터들을 구성하는 데이터 파일, 컨트롤 파일, 로그 파일 등 물리적인 파일들
넷째, 오라클 회사 이름. 오라클 사 라고도 한다.

여기에서 말하는 오라클 데이터베이스는 두 번째 의미가 된다. 특별한 언급이 없는 한 앞으로는 오라클 데이터베이스 혹은 데이터베이스라고 하면 두 번째 의미를 말한다는 점을 기억해 두자.

- 오라클 인스턴스
  :인스턴스란 용어는 오라클에서 뿐만 아니라 객체지향 등 여러 가지 분야에서 사용하는 용어이다.오라클에서의 인스턴스(Oracle Instance)는 오라클 데이터베이스, 즉 물리적인 파일에 접근하고 데이터베이스를 관리하기 위한 수단으로, 이러한 역할을 하는 SGA(System Global Area)라는 메모리 영역과 백그라운드 프로세스(Background Processes)들로 구성된다. 하나의 인스턴스는 오직 한 번에 하나의 데이터베이스에서만 오픈되고 사용될 수 있다.

              위 세가지 개념을 알고 있어야 전역 데이터베이스 이름과 SID를 이해할 수 있다.
----------------------------------------------------------------------------------------
- 전역 데이터베이스 이름
  :전역 데이터베이스 이름(Global Database Name)이란 오라클 데이터베이스를 식별하기 위한 유일한 이름(값)을 말한다. 보통 여러 개의 오라클 데이터베이스에 동시에 접속하여 사용하는 것이 가능한데 이때 이를 식별하기 위한 이름이 되는 셈이다. 전역 데이터베이스 이름은 'db_name.domain_name(데이터베이스 명.도메인 명)'으로 명명된다. 예를들면 'orcldb.sale.us.com'이라는 이름이 있는 경우 'orcldb'가 데이터베이스명이며 'sale.us.com'이 도메인명이 된다.
전역(global)이라는 이름이 암시하듯이 전역 데이터베이스 이름은 전 세계에서 유일한 값이 될수 있다.

  예를 들어보자. 대한민국에는 홍길동이라는 사람이 적어도 한 명 이상은 있을 것이다. 따라서 특정한 홍길동이라는 사람을 찾기 위해서는 이름만 가지고는 식별하기 어렵다. 범위를 좀 좁혀서 서울시 마포구 연남동 사는 홍길동이란 사람이 있다고 한다면 거의 유일하게 식별할 수 있을 것이다. 여기서 홍길동이 데이터베이스 이름이 되며, '568번지.연남동.마포구.서울시.대한민국'가 도메인명이 되는 것이다.

- SID(시스템 식별자)
  :SID(System Identifier, 시스템 식별자)는 오라클 데이터베이스가 아닌 오라클 인스턴스를 식별하기 위한 유일한 값이고, 그 값은 데이터베이스 이름이 된다. 즉, 전역 데이터베이스 이름에서 도메인 명을 제외한 데이터베이스 명이 그 값이 되는 것이다. 도메인 명을 생략하는 경우가 많은데 이러한 경우 전역 데이터베이스 이름과 동일한 값을 갖게 된다.

소규모 네트워크 상에서 오라클 서버를 구성해서 사용할 경우에는 굳이 도메인 명을 명시하지 않아도 되지만, 대규모 네트워크 상에서는 (예를들어, 글로벌 기업의 경우에는 전 세계 각지에 데이터베이스를 구축하여 사용할 수 잇는데, 각 국가마다 데이터베이스를 만들어 사용할 경우에는 oracle.korea, oracle.japan처럼 도메인명을 명시해서 전역 데이터베이스 이름을 구성할 수 있다) 전역 데이터베이스 이름과 sid는 다른 값을 갖게 될 것이다. 따라서 SID와 전역 데이터베이스 이름은 엄연히 다른 개념임을 기억하자


출처 : http://www.cyworld.com/duck_info/3518956



[출처] 전역데이터베이스, SID|작성자 kjrok


http://seandb.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-SID

SID (

1. 오라클 SID를 확인하는 방법
SQL> select instance from v$thread;
INSTANCE
----------------
ORCL


2. 오라클 데이타베이스명을 확인하는 방법

SELECT NAME, DB_UNIQUE_NAME FROM v$database;
SQL> select * from v$database;


지금껏 오라클을 사용하면서도 SID와 Service Name은 거의 구분해서 사용하지 않았다.
덕분에 최근까지는 SID와 Service의 차이를 인식하지 못하고 사용해 왔다.
사실 일반적인 테스트 환경이나 소규모의 경우 한개의 DB서버에 한개의 인스턴스만 사용한다.
이런 환경에서는 SID와 Service Name을 구분할 필요가 없었던것.

단순히 구분짓자면 이렇게 말할수 있다.

SID                = DB 하나의 인스턴스
Service Name = 여러개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한것


쉽게 예를 들어보자.

서버 한대에 인스턴스를 여러개 생성하여 orcl1, orcl2 로 각각 생성했다고 하자.
각각의 인스턴스는  orcl1, orcl2 라는 SID를 갖게 된다.
해당 서버에서 두개의 인스턴스를 묶어 사용할경우, orcl 이라는 Service Name을 갖을수 있다.

이외에도 서버 두대에 설치하여 각각 미러링 처리하여 동일한 서버인것 처럼 활용할경우
각각의 서버는 서로다른 SID를 갖게 되지만 Service Name을 동일하게 하여 같은 서버 처럼 활용할수 있다.


TESTDB =                           // 서비스 이름
 (DESCRIPTION =                // 접속하고자 하는 대상 데이터베이스정보
   (ADDRESS_LIST =             // ADDRESS들의 모임
      // ADDRESS : 접속하고자 하는 데이터베이스 서버의 리스너를 호출하기 위한 주소 정보
      // Protocol, Hostname, Port를 지정할 수 있습니다.
     (ADDRESS = (PROTOCOL = TCP)(HOST = calmmass.com)(PORT = 1521))
    )
   (CONNECT_DATA =        // SERVICE_NAME 옵션을 이용하여 접속할 리스너프로세스가 사용
                                       // 하는 서비스 이름을 지정하거나또는 SID 옵션을 이용
                                       // 데이터베이스의 SID 명을 지정
     (SERVICE_NAME = testdb)
    )
  )

그래서 접속한다면 ..
sqlplus system/oracle@TESTDB

SID는 오라클 인스턴스마다 주는 고유의 ID라고 생각하시면 되고
TESTDB(서비스 이름)은 리스너에서 사용하는 오라클 넷 서비스를 의미 합니다.  
보통 싱글모드에서는 DB이름과 SID를 동일하게 구성하기도 합니다.

[출처] Oracle TNS에서 SID와 service_name의 차이 | |작성자 xxsaintxx

출처: http://seandb.tistory.com/entry/오라클-SID [DB공부합시다]

java8 map

package test.map;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.ArrayUtils;

public class TestOfMap {

/** 対応コード : XX1 */
private static final Map<String, String> cdValOfXx1 = new HashMap<String, String>() {
{
put("new01", "old01");
put("new02", "old01");
put("new03", "old01");
put("new04", "old01");
put("new05", "old01");
}
};

/** 対応コード:XX2 */
private static final Map<String, String> cdValOfXx2 = new HashMap<String, String>() {
{
put("new11", "old11");
put("new12", "old11");
put("new13", "old11");
put("new14", "old11");
put("new15", "old11");
}
};

/** コード */
private static final Map<String, Map<String, String>> cdOfXx1 = new HashMap<String, Map<String, String>>() {
{
put("101", cdValOfXx1);
put("201", cdValOfXx2);
}
};

/** データリストXxx1 */
private static final String[] tblListOfXx1 = {
Tbl1Entity.class.getSimpleName(), Tbl2Entity.class.getSimpleName(),
Tbl3Entity.class.getSimpleName(), };

/** データリストXxx2「 */
public static final String[] tblListOfXx2 = {
Tbl1Entity.class.getSimpleName(), Tbl2Entity.class.getSimpleName(),
Tbl3Entity.class.getSimpleName(), };

/**
* Testメソッド
*/
public void test(){
boolean isRegistOfTbl1 = ArrayUtils.contains(tblListOfXx1, Tbl1Entity.class.getSimpleName());
if (isRegistOfTbl1) {
// Mapから値取得、デフォルートは空
cdValOfXx1.getOrDefault("new11", "");
// TODO 登録処理など

}
}
}

java Iterator list重複削除

Iterator<InfoBean> itr = userCpDepList.iterator();
List<String> dupList = new ArrayList<String>();
while (itr.hasNext()) {
InfoBean info = itr.next();
if (dupList.contains(info.getBuso())){
itr.remove();
}
else{
dupList.add(info.getBuso());
}
}

java8 sort

// ソート
List<InfoBean> userCpDepList = new ArrayList<InfoBean>();
Comparator<InfoBean> orderByItem1 = Comparator.comparing(InfoBean::getItem1).reversed();
Comparator<InfoBean> orderByItem2 = Comparator.comparing(InfoBean::getItem2);
Comparator<InfoBean> orderByItem3 = Comparator.comparing(InfoBean::getItem3);

userCpDepList = userCpDepList.stream()
.sorted(orderByItem1
.thenComparing(orderByItem2
.thenComparing(orderByItem3))).collect(Collectors.toList());

2018년 2월 4일 일요일

log4j

Log4jでログ出力
参考
https://itsakura.com/java_log4jxml

■mavenのpom.xmlにlog4j定義(またはjarを入手し、クラスパスに設定)
■プルジェクト直下にlog4j.xml定義
■テストクラス作成、テスト
-----------pom.xml------------------------------------------------------
<!-- 追加4 log4j -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!-- 追加4 log4j end -->
----------log4j.xml----------------------------------------------------------
説明
<param name="File" value="./log/log.log" />は<!-- log作成場所 -->
<param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %m%n"/><!--log出力時フォーマット -->
<level value="debug" /><!--log出力レベル debug以上出力 -->
<!-- 上記の定義:ログレベルの順番は、trace – debug – info – warn – error – fatal -->
---------------------------------------------
<?xml version="1.0" encoding="MS932" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
   <appender name="Appender1" class="org.apache.log4j.FileAppender">
      <param name="File" value="./log/log.log" />
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %m%n"/>
      </layout>
   </appender>
   <root>
      <level value="debug" />
      <appender-ref ref="Appender1" />
   </root>
</log4j:configuration>
-----------テストクラス作成、テスト----------------------------------------------
package com.mybatis;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

public class LogTest {
public static void main(String[] args) {
// Logger
Logger logger = Logger.getLogger(LogTest.class);
DOMConfigurator.configure("log4j.xml");
logger.trace("trace "+"1");
logger.debug("debug "+"1");
logger.info("info "+"1");
logger.warn("warn "+"1");
logger.error("error "+"1");
}
}
-----------------------------------------------------------------


---------------------------------------------------
※Log4j.propertiesを使う場合、
resources直下に配置
log4j.xmlが存在したら、xmlを優先にするため、注意
mybatisのsqlログを出力したい場合:下記のlog4j.logger.com.example.dao=DEBUG
特定のDaoクラスを定義も可能log4j.logger.com.example.dao.Test1Dao=DEBUG
------------------Log4j.properties-----------------------------------
# Global logging configuration
#log4j.logger.java.sql=DEBUG
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.example.dao=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
------------------------------------------------------------------------------



2018년 2월 3일 토요일

MyBatis2

MyBatisを使って、entity,daoを自動で作成する。

■mavenプロジェクト作成
 (pom.xml修正:mybatis、generator定義、generator拡張時は、拡張クラスを定義)、
■maven-install
■generator(拡張pluginがある場合、plugin定義), mybatis用xml定義
■generator拡張クラス作成
■maven-build(ゴール追加:generator..)
   generatorによって、Dao(Mapper, Mapper.xml), Entityクラスが自動生成される。
 ※build前にDB環境構築(該当テーブル生成して置く)
---------------------------------------------------------------------
■mavenプロジェクト作成
  1.mavenプロジェクト作成
  2.pom.xml修正
  下記追加
---------------------------------------------------------------
  <!-- 追加1 start ※</dependencies>前に-->
    <!-- http://mvnrepository.com/artifact/org.mybatis/mybatis -->
      <dependency>
         <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.0</version>
  </dependency>
<!-- 追加1 end -->

<!-- 追加3 mybatis generator pluginを使うため  start -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.6</version>
</dependency>
<!-- 追加3 end -->

  </dependencies>


<!-- 追加2 starat  ※ </project>前に-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.1</version>
<!-- 追加2 end -->

  <!-- 私のjar(generatorをカスタムしたplugin)を追加  -->
          <dependencies>
            <dependency>
              <groupId>com.mybatis2.plugin</groupId>
              <artifactId>plugin</artifactId>
              <version>1.0.0</version>
            </dependency>
          </dependencies>
           </plugin>
  <!-- 私のjar end -->

 <!--  C:\Users\user\.m2\repository\com\mybatis\plugin\plugin\1.0.0\plugin-1.0.0.jar  プラグインのクラスパスを認識させるため、カスタムpluginクラスのjar作成し、こちらの場所に配置しておく-->
        </plugins>
    </build>

</project>
-----------------------------------------------------------------------
■maven-install
 3.Maven Install
      C:\Users\user\.m2\repositoryにinstallされたこと確認
  Maven依存関係
   mybatis-3.4.0.jar ー--> 追加されたこと確認
■generator(拡張pluginがある場合、plugin定義), mybatis用xml定義
 4. resources追加(src/main/resources/)
    ・mybatis-config.xml,
    ・generatorConfig.xml

------------- mybatis-config.xml ---------------------------------------
<?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>

<!--     JDBCの設定です(1) -->
    <environments default="gissn">
        <environment id="gissn">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
                <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
                <property name="username" value="gissn" />
                <property name="password" value="oracle" />
            </dataSource>
        </environment>
    </environments>

<!--     mapperパッケージを指定します -->
    <mappers>
        <package name="com.example.dao" />
    </mappers>

</configuration>
-----------------------------generatorConfig-------------------------------------
xxx.xxx.xx.x --> localhost

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
    <classPathEntry      location="C:\work\tools\oracle\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar" />
    <context id="context1" targetRuntime="MyBatis3">

<!-- ★com.mybatis2パッケージに拡張pluginクラスがあるか 確認! start -->
<plugin type="com.mybatis.plugin.MapperClassNamePlugin" />
<plugin type="com.mybatis.plugin.BeanClassNamePlugin" />
<!-- ★com.mybatis2パッケージに拡張pluginクラスがあるか 確認! end -->

<!--     JDBCの設定です (1) -->
        <jdbcConnection
            driverClass="oracle.jdbc.driver.OracleDriver"
            connectionURL="jdbc:oracle:thin:@localhost:1521:XE"
            userId="gissn"
            password="oracle"
        />

<!--     自動生成するエンティティの設定です (2) -->
        <javaModelGenerator
            targetPackage="com.example.entity"
            targetProject="src/main/java/"
        />
        <sqlMapGenerator
            targetPackage="com.example.dao"
            targetProject="src/main/java/"
        />
        <javaClientGenerator
            targetPackage="com.example.dao"
            targetProject="src/main/java/"
            type="XMLMAPPER"
        />

<!--     生成対象のテーブルです(3) -->
        <table schema="gissn" tableName="%" />
    </context>
</generatorConfiguration>
-------------------------------------------------
■generator拡張クラス作成
----BeanClassNamePlugin (~Entityクラス名にするためプラグインクラス作成)---------
package com.mybatis.plugin;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;

/**
 * MyBatis Generatorで生成するクラス名を変更するプラグイン。
 */
public class BeanClassNamePlugin extends PluginAdapter {

    public boolean validate(List<String> warnings) {
        return true;
    }

    @Override
    public void initialized(IntrospectedTable table) {
        super.initialized(table);

        table.setBaseRecordType(table.getBaseRecordType() + "Entity");
        table.setExampleType(replace(table.getExampleType(), "Example", "Filter") );
    }

private String replace(String target, String search, String replace) {
Pattern pattern = Pattern.compile(search);
Matcher matcher = pattern.matcher(target);
target = matcher.replaceAll(replace);
return target;
}
}

---MapperClassNamePlugin (MapperクラスをDaoクラウス名に生成させるため)--------
package com.mybatis.plugin;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
public class MapperClassNamePlugin extends PluginAdapter {
public boolean validate(List<String> warnings) {
return true;
}
@Override
public void initialized(IntrospectedTable introspectedTable) {
introspectedTable.setMyBatis3JavaMapperType(replace(introspectedTable.getMyBatis3JavaMapperType(), "Mapper", "Dao"));//~Mapper.java を変更
introspectedTable.setMyBatis3XmlMapperFileName(replace(introspectedTable.getMyBatis3XmlMapperFileName(), "Mapper", "Dao")); //~Mapper.xml を変更
}
private String replace(String target, String search, String replace) {
Pattern pattern = Pattern.compile(search);
Matcher matcher = pattern.matcher(target);
target = matcher.replaceAll(replace);
return target;
}
}

※pluginクラスをjarでエクスポートし、pom.xml定義場所に配置
 ex)C:\Users\user\.m2\repository\com\mybatis2\plugin\plugin\1.0.0\plugin-1.0.0.jar

----------------------------------------------------
■maven-build(ゴール追加:generator..)
  6.maven ビルドに新規追加し、実行
 ・基底ディレクトリーにmavenプロジェクトのワークスペースを設定
 ・ゴール設定:mybatis-generator:generate

  7. 設定path通り、entity,daoが作成されていればOK
------------------------------------------------------------------





-------------------------------------------------------

■sqlログ出力するため、pom.xmlにlog4j.jar定義
-----------pom.xml--------------------------------------------
<!-- 追加4 log4j -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!-- 追加4 log4j end -->
---------------------------------------------------
※Log4j.propertiesを使う
resources直下に配置
log4j.xmlが存在したら、xmlを優先にするため、注意
mybatisのsqlログを出力したい場合:下記のlog4j.logger.com.example.dao=DEBUG
特定のDaoクラスを定義も可能log4j.logger.com.example.dao.Test1Dao=DEBUG
------------------Log4j.properties-----------------------------------
# Global logging configuration
#log4j.logger.java.sql=DEBUG
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.example.dao=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
------------------------------------------------------------------------------





■insertとinsertSelectiveの違い
insert:
   insert項目がすべて指定されてsql発行される。
  ・パラメータを指定しなかった場合、nullが指定されてしまう。
             ex)
Test1Entity entity = new Test1Entity();
entity.setCol1("insert_1");
entity.setCol2("1");
int result = dao.insert(entity);

実行結果LOG
DEBUG [main] - ==>  Preparing: insert into GISSN.TEST1 (COL1, COL2, COL3 ) values (?, ?, ? )
DEBUG [main] - ==> Parameters:
insert_1(String), 1(String), null
DEBUG [main] - <==    Updates: 1

insertSelective:
 insert項目が指定した項目のみ、指定されてsql発行される。
  ・パラメータを指定しなかった場合、insert項目に指定されない。
  ・null設定してもinsert項目に指定されない。
               ex)
Test1Entity entity = new Test1Entity();
entity.setCol1("insertSv_1");
entity.setCol2("1");
int result = dao.insertSelective(entity);

実行結果LOG
DEBUG [main] - ==>  Preparing: insert into GISSN.TEST1 ( COL1, COL2 ) values ( ?, ? ) 
DEBUG [main] - ==> Parameters: insertSv_1(String), 1(String)
DEBUG [main] - <==    Updates: 1

テーブルTEST1確認
※col3は、default '0':insertメソッドではデフォルト指定カラムがある場合、指定しないとdefault値でinsertできない。null指定したら、nullでinsert。defaultカラムが存在した場合、insertSelectiveメソッドを使った方がいいかもしれない。
--------------------------------------
col1             col2      col3
--------------------------------------
insert_1         1        (NULL)    
insertSv_1      1         0
--------------------------------------

■updateByPrimaryKeyとupdateByPrimaryKeySelective
 ・updateByPrimaryKeyメソッド
    PK以外のすべての項目を更新する。
  設定しない項目は、nullで更新されてしまう。(updateのset文に設定しない項目も追加され、さらにnullで更新)
               ex)col4は、設定してない
Test1Entity entity = new Test1Entity();
entity.setCol1("key1");
entity.setCol2("key2");
entity.setCol3("col3");
int result = dao.updateByPrimaryKey(entity);

実行結果LOG
DEBUG [main] - ==>  Preparing: update GISSN.TEST1 set COL3 = ?, COL4 = ? where COL1 = ? and COL2 = ?
DEBUG [main] - ==> Parameters: col3(String), null, insert1(String),  (String)
DEBUG [main] - <==    Updates: 1

・ updateByPrimaryKeySelectiveメソッド
 PK以外の設定した項目のみ更新する。
 nullで設定した項目は更新されない。(updateのset文に追加されない)

               ex)col4は、設定してない
Test1Entity entity = new Test1Entity();
entity.setCol1("key1");
entity.setCol2("key2");
entity.setCol3("col3");
int result = dao.updateByPrimaryKeySelective(entity);

実行結果LOG
DEBG [main] - ==>  Preparing: update GISSN.TEST1 SET COL3 = ? where COL1 = ? and COL2 = ?
DEBUG [main] - ==> Parameters: col3(String), insertSv1(String),  (String)
DEBUG [main] - <==    Updates: 1