管理人

SEとして働く管理人「まつ」がつぶやく個人運営サイトになります。 ITの難しい用語や、仕事で感じた事などを中心に"わかりやすさ"を意識して記事にしています。少しでも共感や参考にしていただける人がいたら嬉しいです。

2022/8/15

バイナリコードとは

バイナリコード バイナリコード(英:binary code)とは、コンピュータ(CPU)が理解できる2進数で表現されたコードのことです。オブジェクトコードやネイティブコードとも呼ばれています。 プログラミング言語は人間が解釈しやすいように作られているため、そのままではコンピュータが理解できません。 そのためコンパイラやインタプリタなどを使い、コンピュータが解釈できる形式のコード(機械語)に変換してから実行します。 上記の例はコンパイラのイメージ例です。プログラミング言語で書かれたソースコードを、コンピュー ...

2022/8/10

MyBatisで複数のレコードを一括で更新する方法

【MyBatis】大量データを一括更新する MyBatisで大量データを一括で更新する方法を紹介します。 使用するDBMS(データベース管理システム)により一括更新の方法が異なるため、本記事では「Oracle」「PostgreSQL」「SQL Server」「MySQL」それぞれの方法を紹介します。 ※今回の例では、下記のUPDATE文を一括更新しています。 [通常のUPDATE文] <!-- 更新 --> <update id="update"> UPDATE userinfo ...

2022/8/10

MyBatisで一括登録(バルクインサート)する方法

【MyBatis】BULK INSERTでデータを登録する方法 MyBatisでデータを一括登録(BULK INSERT)する方法を紹介します。 また「一括登録(BULK INSERT)」と「1件ずつ登録(INSERT)」する方法で 1万、10万、100万レコードを登録したときにかかる処理時間を測定しています。 本記事で使用するテーブル定義は次のとおり。 物理名 論理名 データ型 NOT NULL 説明 id ID BIGINT 〇 主キー(AUTO_INCREMENT) name 名前 VARCHAR( ...

2022/8/9

MyBatisでレコードを物理削除(DELETE文)する方法

MyBatisでDELETE文を実行する方法 MyBatisでDELETE文を使いレコードを物理削除する方法を紹介します。 SQL文(XMLファイル) MyBatisのSQL文(XMLファイル)は次のとおりで、<delete>~</delete>内にDELETE文を書くことができます。 [XMLファイル] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/ ...

2022/8/9

MyBatisでレコードを更新(UPDATE文)する方法

MyBatisでUPDATE文を実行する MyBatisでUPDATE文を使いレコードを更新する方法を紹介します。 本記事で使用するテーブル定義は次のとおり。 物理名 論理名 データ型 NOT NULL 説明 id ID BIGINT 〇 主キー(AUTO_INCREMENT) name 名前 VARCHAR(100) 〇 ユーザーの名前 address 住所 VARCHAR(255) ユーザーの住所 phone 電話番号 VARCHAR(50) ユーザーの電話番号 update_date 更新日時 DA ...

2022/8/3

MyBatisでレコードを登録(INSERT文)する方法

MyBatisでINSERT文を実行する MyBatisでINSERT文を使いレコードを登録する方法を紹介します。 本記事で使用するテーブル定義は次のとおり。 物理名 論理名 データ型 NOT NULL 説明 id ID BIGINT 〇 主キー(AUTO_INCREMENT) name 名前 VARCHAR(100) 〇 ユーザーの名前 address 住所 VARCHAR(255) ユーザーの住所 phone 電話番号 VARCHAR(50) ユーザーの電話番号 update_date 更新日時 DA ...

2022/8/2

【MyBatis】resultMapで自動的にマッピング(autoMapping)する方法

階層構造でautoMappingを利用する方法 MyBatisでは、次のように<resultMap>を利用することで、ネストしたリスト(階層構造)を手動でマッピングできます。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> & ...

2022/7/31

Spring MyBatisでIN句を使用する方法

MyBatisでIN句を使用する方法 MyBatisで次のようにIN句を使ったSQL文を生成する方法を紹介します。 SQL文(XMLファイル) MyBatisのSQL文(XMLファイル)は次のとおり。 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd ...

2022/7/27

MyBatisでWHERE句を動的に生成する方法

MyBatisでWHERE句を動的に生成する方法 WHERE句を静的に生成すると困るケース 例えば、MyBatisで次のような動的SQLを作成したとします。 <select id="search" resultType="com.example.demo.entity.UserInfo"> SELECT * FROM userinfo WHERE <if test="id != null"> id = #{id} </if> <if test="name != n ...

2022/7/26

MyBatisでif文(条件分岐)を使用して動的SQLを生成する

MyBatisで条件分岐を実装する ifで条件分岐 MyBatisでは「if test」で「もし~だったら」という条件を書くことができます。 次の例で、もし「idがnull以外」の場合「AND id = #{id}」の条件をWHERE句に追加するという条件分岐を作成しています。 <select id="search" resultType="com.example.demo.entity.UserInfo"> SELECT * FROM userinfo WHERE delete_date I ...

2022/7/25

【MyBatis】ネストしたリスト(階層構造)をマッピングする方法

MyBatisでネストしたリストをマッピングする方法 MyBatisで親子関係になっているネストしたリスト(階層構造)をマッピングする方法を紹介します。 例えば、次のようなテーブルがあるとします。(会社テーブルと社員テーブルの関係性は1:n) この2つのテーブルを結合したSQL文を発行し SELECT c.id ,c.name ,e.id AS employeeId ,e.name AS employeeName ,e.address ,e.phone FROM company c INNER JOIN ...

2022/10/18

MyBatisでLIKE句(部分一致、前方一致、後方一致)を実装する

MyBatisでLIKE検索 CONCAT関数を使用する MyBatisで「部分一致」「前方一致」「後方一致」の検索をする場合は、LIKEとCONCAT関数を使って記述します。 ■部分一致 LIKE CONCAT('%', #{value}, '%') ■前方一致 LIKE CONCAT(#{value}, '%') ■後方一致 LIKE CONCAT('%', #{value})   下記はMyBatisでLIKE句を使ったSELECT文の例です。 <select id="search" ...

2023/2/1

Spring + MyBatisで楽観ロックを実装する

はじめに MyBatisを利用した楽観ロックの方法を紹介します。 MyBatisはSpring Data JPAのようにライブラリとして楽観ロックを行う仕組みは提供していないため、独自で実装する必要があります。 本記事で使用するテーブル定義は次の通りです。 物理名 論理名 データ型 NOT NULL 説明 id ID BIGINT 〇 主キー(AUTO_INCREMENT) name 名前 VARCHAR(100) 〇 ユーザーの名前 update_date 更新日時 TIMESTAMP 〇 楽観ロック用 ...

2022/7/18

Spring Data JPAで楽観ロックを実装する

はじめに Spring Data JPAを利用した楽観ロックの方法を紹介します。 本記事で使用するテーブル定義は次の通りです。 物理名 論理名 データ型 NOT NULL 説明 id ID BIGINT 〇 主キー(AUTO_INCREMENT) name 名前 VARCHAR(100) 〇 ユーザーの名前 version バージョン BIGINT 〇 楽観ロック用カラム ■CREATE文 CREATE TABLE `sampledb`.`lock_test` ( `id` BIGINT NOT NULL ...

2023/8/3

MyBatis + SpringでWebアプリ(CRUD)を作成する

はじめに MyBatisとSpring Bootを利用して「検索画面」「登録画面」「編集画面」の作成方法を紹介します。 本記事で作成する画面は次のとおりです。 ■検索画面 ■新規登録画面 ■編集画面 開発環境 開発環境 名称 説明 開発言語 Java 人気の開発言語 開発ツール Eclipse Javaでの定番開発ツール フレームワーク Spring Boot 人気のSpringフレームワークをベースとしたフレームワーク テンプレートエンジン Thymeleaf Spring Bootと相性が良いテンプレ ...

2023/8/3

ネイティブコードとは

ネイティブコード ネイティブコードとは ネイティブコード(英:native code)とは、コンピュータのCPU(マイクロプロセッサ)が理解できる形式(機械語)で記述されたプログラムのことです。オブジェクトコードとも呼ばれています。 機械語の命令形式はCPUの種類によって異なります。 一般的に同じメーカーのCPUであれば、プロセッサ製品間は同じ命令セット(機械語で記述された命令の集まり)を共有するが、メーカーが異なれば命令セットも変わり(異なるメーカーでも同じ命令セットの場合もある)、ネイティブコードはC ...

2023/8/3

バイトコードとは

バイトコード バイトコード(中間コード)とは バイトコード(英:bytecode)とは、仮想マシン上で動作するために作られた実行可能な中間コードのことです。 バイトコードという名前は、命令の構成がバイト指向のためバイトコードと呼ばれていたが、仮想マシン上で動作するために作られた実行可能な中間コードであれば、バイト指向でなくともバイトコードと呼ぶことが多いです。 バイトコードのイメージ例 プログラミング言語は人間が解釈しやすいように作られているため、そのままではコンピュータは理解できません。そこで、次の図の ...

2023/8/3

オブジェクトコードとは

オブジェクトコード オブジェクトコード(英:object code)とは、プログラミング言語で書かれたソースコードをコンピュータが直接実行できる形式に変換したコードのことです。 プログラミング言語は人間が解釈しやすいように作られているため、そのままではコンピュータは理解できません。そのためコンパイラなどを使い、コンピュータが解釈できる形式のコード(機械語)に変換してから実行します。 このコンパイラなどで生成したコードのことをオブジェクトコードといいます。 次の図は、コンパイラのイメージ例です。 &nbsp ...

2023/8/3

JITコンパイラ(実行時コンパイラ)とは

JITコンパイラ JITコンパイラ(実行時コンパイラ)とは JITコンパイラとは Just In Timeの略で、その名の通り"必要なものを必要な時に"コンパイルするコンパイラのことです。 ソフトウェア実行時にコードのコンパイルを行い実行速度の向上を図るコンパイラで「実行時コンパイラ」とも呼ばれています。 通常のコンパイラは、ソースコードから機械語(オブジェクトコード)への変換を実行前に事前に行います。 それに対しJITコンパイラは、ソフトウェア実行時にソースコード または 中間コード(バイトコード)を機 ...

2022/7/13

バイトコードインタプリタとは

バイトコードインタプリタ バイトコードインタプリタとは、バイトコード(中間コード)を実行するインタプリタのことです。 インタプリタとは「通訳者」の意味で、コンピュータが解釈できる機械語に変換しながら実行するものであり、バイトコードとは、仮想マシン上で動作するために作られた実行可能な中間コードのことです。 次の図は、バイトコードインタプリタのイメージ例です。 ソースコードを仮想マシンで動作するバイトコード(中間コード)にコンパイル(変換)し、コンパイルしたバイトコードをバイトコードインタプリタで機械語に変換 ...