MyBatis 動的SQL の trim が便利なので使い方のまとめ(ついでにコード読んでみた)

アスクルの こたにん (@Kotanin0) です。

アスクルでは、O/Rマッパーに MyBatis3 を使っています。
MyBatis は、単純なCRUD操作だけでなく、 動的SQL という便利な拡張構文があります。

たとえば、本の情報を管理するテーブルから、本の一覧を抽出したいSQLがあったとします。

  • 本のタイトルを指定しなければ全件SELECT
  • 本のタイトルを指定していればWHERE句を入れてSELECT

と、本のタイトルの指定有無でif文を書きたいような場面では、次のようにif要素を利用すると解決できます。

<select>
    SELECT * FROM BOOK
    <if test="title != null">
        WHERE title LIKE #{title}
    </if>
</select>

MyBatis3動的SQL は、上のようなif要素をはじめとして、次の9種類の要素が用意されています。

  • if
  • choose
  • when
  • otherwise
  • trim
  • where
  • set
  • foreach
  • bind

その中でもtrim要素がとても便利だったので、今回はtrim要素に限定して紹介していきます。

続きを読む

Kotlin 1.6ではList.minus(List)の処理速度がデフォルトだと若干遅くなってしまうという話

こんにちは。ASKULのほかほかごはんです。今回はKotlin1.6におけるCollection操作についての記事になります。

List1からList2の要素を除去する場合、Kotlinでは次のように書けます。

val result = list1 - list2

このコードはKotlin 1.6ではこう書いたほうがパフォーマンスがよくなります (とIntelliJ先生が教えてくれました 😇)

val result = list1 - list2.toSet()

しかし、Kotlin 1.5まではこのコードについてIntelliJがアドバイスをくれることはなかったはずです 🤔

これは、Kotlin 1.6の minus が Kotlin 1.5 以前とは異なり、次のように実装されているからです。

続きを読む

Kotlin で DX がめちゃくちゃ改善されました

この記事は、Advent Calendar 2021 / Qiita主催「開発者体験:DXをめちゃくちゃ改善した話」 2日目の記事です。

はじめに

こんにちは。しゅん(@MxShun)です。

私は昨年アスクルに入社し、中小事業所向けサービス「ASKUL」と大企業向けサービス「SOLOEL ARENA」を統合することで売上1兆円企業をめざす取り組み「PJ Trylion(プロジェクト・トライオン)」でサーバサイド Kotlin を書き始めました。

今回の記事では、アスクルで Kotlin を書き始めて、DX、とりわけ開発者体験がめちゃくちゃ改善された話をしたいと思います。

続きを読む

【社内勉強会】いまさら聞けないAWS【AStudy】

こんにちは、のんです。

今回は2021/10/28(金)に実施したAStudyより、とくむらさんにご登壇いただいた「いまさら聞けないAWS」をとりあげます。

AWSの基礎的な知識や用語を知るための導入となる内容になります。普段AWSを使っている方だけではなく、AWSに興味があるけどなかなか初めの一歩を踏み出せない方や勉強したいけどいまさら聞けない!という方も是非参考にしてください。

  • AStudyとは?
  • 今更聞けないAWS
  • サービス基盤
    • リージョン
    • AZ
  • コンピューティング
    • EC2
    • ECS
  • ネットワーク
    • VPC
    • ELB
    • ALB
  • セキュリティ
    • IAM
    • IAMユーザ
    • IAMポリシー
    • IAMロール
  • ストレージ(S3)
  • DB(RDS)
  • おわりに
  • バックナンバー
    • 2021年
    • 2020年
続きを読む

DynamoDBのThrottlingExceptionを書き込みシャーディングで対策した記録

こんにちは。ASKULのほかほかごはんです。最近は商品データ管理の開発を担当しています。

ASKULではBtoB, BtoCのお客様に最適な商品を提供するために大量の商品データを管理しています。 一方で、データを加工する夜間バッチの処理速度に問題を抱えていました。

今回、商品データ管理にDynamoDBを利用することで、バッチ処理におけるパフォーマンスの大幅更新にチャレンジしました 🚀

続きを読む

ASKUL Engineering BLOG

2021 © ASKUL Corporation. All rights reserved.