SpringBoot関連の細かいこと

#環境設定
 
プロキシエラー(407)で、つまずいたので年のため共有します。

1.eclipse.iniに以下を追加

-Djdk.http.auth.tunneling.disabledSchemes=""


2.プロキシの設定を追加

[ウィンドウ] -> [設定] -> [一般] -> [ネットワーク接続]

アクティブ・プロバイダー「ネイティブ」を「マニュアル」に変更し、「HTTP」と「HTTPS」に編集ボタンを押し以下プロキシの設定を追加

ホスト：127.0.0.1 ポート：8080

認証が必要にチェックを入れて自分のユーザパスワードを入力

.m2

配下に以下ファイルを配置してファイル内のursename,passwordの箇所にご自分の情報をいれてためしてみてください
（それぞれ2か所あります）
setting.xml
#取り込み方法
・Import 既存MAVENプロジェクト
 

 
#Eclipse 設定　ini
-Xms256m

-Xmx1024m


 

#Teams

改行するときはShift+Enterで可能です。

また、何行も打ちたいときは下のA押すと、Enterだけで改行できま

#EclipseでGitを使う。
https://www.blog.danishi.net/2019/04/30/post-866/
#EgitでCommit時のコミッター設定

https://qiita.com/Ryuryu346/items/f896beb0e2ae2197cc5b

 
#Pom
```
<dependency>

<groupId>org.dbunit</groupId>
 <artifactId>dbunit</artifactId>
 <version>2.5.4</version>
<scope>test</scope>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.datatype</groupId>

 <artifactId>jackson-datatype-jsr310</artifactId>

<version>2.6.1</version>

</dependency>
```

#テストプログラム　下記のアノテーションがないとSpringは動きません。
@SpringBootTest

#プログラムについて
全体

・メンバ変数は、特に理由がない限りprivateで定義する

・変数定義、初期化は使用する直前でおこなう

・try catchは、理由がない限り使わない（エラー共通処理で、処理するためthrow）

・定数名の中にコード値を含めない→コード値が変更されると意味がわからないため

・StringUtilsの扱いが考える。If n==null || 空白

@RestControllerを使う

@Controller → 主にWebページ用のコントローラで使用する。

@RestController → JsonやXML等を返すWebAPI用のコントローラで使用する。

@RequestMapping
URLのパスはこちらに定義

@PostMappingを使う。

@RestControllerに変更すると@ResponseBodyは不要なので削除

・同じ条件のif文が複数あるので1つにまとめて処理する。

・リターンをmapで返すのではなく、dtoを定義する。

・staticメソッドにしない。

・フォーマッターを使う。
・相対パス　決め打ちは避ける。　→　変に刺激するみたいです。



#以下本当にメモ


DBアクセスのソース群

```
・mainクラス

    @Bean

    public DataSource dataSource() {????????

        return DataSourceBuilder.create().url("jdbc:postgresql://localhost:5432/postgres")

                .username("postgres").password("postgres").build();

    }

 

 

    @Bean

    public SqlSessionFactoryBean sqlSessionFactory() {????????

        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();

        sessionFactoryBean.setDataSource(dataSource());

        return sessionFactoryBean;

    }

 

 

    @Bean

    public PlatformTransactionManager transactionManager() {????????

        return new DataSourceTransactionManager(dataSource());

    }

   

・mapper（javaとxml）

参考：DeliveryGoodsInfoMapper

 

 

・entity(必要に応じて)

参考：DeliveryGoodsInfo

 

 

・呼び出す側のコード

    @Autowired

    private DeliveryGoodsInfoMapper deliveryGoodsInfoMapper;

   

    @Autowired

    DeliveryGoodsInfoExample deliveryGoodsInfoExample;

   

    public Long getCount() {

 

 

        return deliveryGoodsInfoMapper.countByExample(deliveryGoodsInfoExample));

 

 

    }



MyBatis自動生成メソッド　条件文の作り方

 

想定通りに動かない例：example.createCriteria()を複数生成

    private List<CodeMappingMaster> getRecordForCodeToSystem(String fromSystemCode, String apiKbn,

            String paramName, String fromValue, String toSystemCode) {????????


        // 取得条件設定用クラス

        CodeMappingMasterExample example = new CodeMappingMasterExample();

        // 変換元システムコード

        example.createCriteria().andFrom_system_codeEqualTo(fromSystemCode);

        // API区分

        example.createCriteria().andApi_classificationEqualTo(apiKbn);

        // パラメータ名

        example.createCriteria().andInterface_paramEqualTo(paramName);

        // 値

        example.createCriteria().andFrom_codeEqualTo(fromValue);

        // 変換先システムコード

        example.createCriteria().andTo_system_codeEqualTo(toSystemCode);



        // 取得結果を返却

        return codeMappingMasterMapper.selectByExample(example);

    }

 
よい例：example.createCriteria()は１つの条件につき、１つだけ。複数条件はドットでつなげて書く

    private List<CdMappingMaster> getRecordForCodeToSystem(String fromSystemCode, String apiKbn,

            String paramName, String fromValue, String toSystemCode) {

 

 

 

        // 取得条件設定用クラス

        CdMappingMasterExample example = new CdMappingMasterExample();

 

 

        // 条件文の生成

        example.createCriteria().andFrom_system_cdEqualTo(fromSystemCode)

                .andApi_classificationEqualTo(apiKbn).andIf_param_nameEqualTo(paramName)

                .andFrom_cdEqualTo(fromValue).andTo_system_cdEqualTo(toSystemCode);

 

 

        // 取得結果を返却

        return cdMappingMasterMapper.selectByExample(example);

    }

  ``` 
#発展
https://qiita.com/JoeB/items/cd612d829f5b1ac12af6