0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaシステムでSQL実行

Last updated at Posted at 2023-05-13

今の現場のJavaのシステム開発でSQLを実行して、データ取得をする処理のメモ。

Javaファイル

javaからSQLを実行する。引数にSQLのWHERE句で使用するための値を格納したMapをセットする。
実際のSQLはPowerSql.xmlに書いてあるのでそのファイルの特定のidを指定する。
下記はPowerSql.xmlのidがselectContractPlanInfoのSQLを指定している。

Company.java
public CompanyBean selectContractPlanInfo(String companyCd,String contractPlanCd) {
  Map<String,Object> paramMap = new HashMap<>();
  paramMap.put("companyCd",companyCd);
  paramMap.put("contractPlanCd",contractPlanCd);
  paramMap.put("openDate",OpenDate)

  return (CompanyBean) this.getSqlMapClientTemplate().queryForObject("PowerSql.selectContractPlanInfo",paramMap);
}

SQLの処理は以下。

PowerSql.xml
<resultMap id="ContractPlanBean" class="jp.cp.softbank.wep.bean.CompanyBean">
    <result column="CLASS_KIND" property="kind">
    <result column="CLASS_CD" property="code">
    <result column="CLASS_NAME" property="name">
</resultMap>

<select id="selectContractPlanInfo" parameterClass="java.util.Map" resultMap="ContractPlanBean">
    SELECT 
        "-" AS CLASS_KIND
        PLN.ELECT_POWER_PLAN_CD AS CLASS_CD
        PLN.ELECT_POWER_PLAN_NM AS CLASS_NAME
    FROM
        AA11.TB_MST_PLAN_CTRL
    WHERE
        CTRL_ELECT_POWER_PLAN_CD = PLN.ELECT_POWER_PLAN_CD
    AND
        CTRL.CONTRACTOR_TYPE_CD='01'
    AND
        CTRL.PROVIDER_CD=#powerCompanyCd#
    AND
        CTRL.ELECT_POWER_PLAN_CD=#contractPlanCd#
    AND
        #openDate.time#
</select>

解説

結果をマッピング

1〜5行目のresultMapはMyBatisによるマッピングの定義。SQLの実行結果をJavaオブジェクトにマッピングする。
例をあげるとAA11.TB_MST_PLAN_CTRLテーブルのCLASS_KINDカラムの値はCompanyBeanオブジェクトのkindプロパティにセットいる。

                                    <!-- class=Beanを指定 -->
<resultMap id="ContractPlanBean" class="jp.cp.softbank.wep.bean.CompanyBean">
    <!--column=テーブルのカラム名 property=Beanにセットされているプロパティ名 -->
    <result column="CLASS_KIND" property="kind">
    <result column="CLASS_CD" property="code">
    <result column="CLASS_NAME" property="name">
</resultMap>

selectタグ

parameterClass="java.util.Map"と指定された場合、クエリやステートメントにはjava.util.Mapクラスのオブジェクトが渡される。Company.javaで引数にしていたparamMapが渡されるということ。
resultMap="ContractPlanBean"は上記のresultMapの定義を指定しているので、結果をマッピングすることができる。

<select id="selectContractPlanInfo" parameterClass="java.util.Map" resultMap="ContractPlanBean">

SQL

#powerCompanyCd#や#contractPlanCd#、#openDate#は、paramMapのキーのことを指している。実行後にキーに該当する値がセットされる。上記でparameterClass="java.util.Map"にしたからこそparamMapを使用することができる。

    SELECT 
        "-" AS CLASS_KIND
        PLN.ELECT_POWER_PLAN_CD AS CLASS_CD
        PLN.ELECT_POWER_PLAN_NM AS CLASS_NAME
    FROM
        AA11.TB_MST_PLAN_CTRL
    WHERE
        CTRL_ELECT_POWER_PLAN_CD = PLN.ELECT_POWER_PLAN_CD
    AND
        CTRL.CONTRACTOR_TYPE_CD='01'
    AND
        CTRL.PROVIDER_CD=#powerCompanyCd#
    AND
        CTRL.ELECT_POWER_PLAN_CD=#contractPlanCd#
    AND
        #openDate.time#

終わり

SLQを実行する処理でした。他のシステム開発ではどのような処理になっているのか気になりました:hushed:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?