質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

1回答

407閲覧

SpringでDB接続にMy Batisを使用しSQLでデータ取得をしたものの格納

flumchaso

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2018/04/26 01:47

編集2018/04/26 01:58

Java8、FWはSpring。DB接続にはMy Batisでmapperを使用します。

この時、AからDまで4つのテーブルが存在しそれぞれを

Java

1List<AClass> resutA = mapper.selectA(); 2List<BClass> resutB = mapper.selectB(); 3List<CClass> resutC = mapper.selectC(); 4List<DClass> resutD = mapper.selectD();

として取得させています。
※AClass、BClass、CClass、DClassはそれぞれ独自に作ったエンティティです。

mapperクラス、mapper.xmlは以下の通りです(カラム等は一部抜粋です)

Java

1public interface mapper { 2 List<AClass> selectA(); 3 List<BClass> selectB(); 4 List<CClass> selectC(); 5 List<DClass> selectD(); 6}

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3<mapper namespace="mapper"> 4 <resultMap id="AResultMap" type="AClass"> 5 <result collumn="NO" jdbcType="CHAR" property="no" /> 6 </resultMap> 7 <resultMap id="BResultMap" type="BClass"> 8 <result collumn="NO" jdbcType="CHAR" property="no" /> 9 </resultMap> 10 <resultMap id="CResultMap" type="CClass"> 11 <result collumn="NO" jdbcType="CHAR" property="no" /> 12 </resultMap> 13 <resultMap id="DResultMap" type="DClass"> 14 <result collumn="NO" jdbcType="CHAR" property="no" /> 15 </resultMap> 16 <select id="selectA" parameterType="map" resultMap="AResultMap"> 17 select * 18 from A 19 </select> 20 <select id="selectB" parameterType="map" resultMap="BResultMap"> 21 select * 22 from B 23 </select> 24 <select id="selectC" parameterType="map" resultMap="CResultMap"> 25 select * 26 from C 27 </select> 28 <select id="selectD" parameterType="map" resultMap="DResultMap"> 29 select * 30 from D 31 </select> 32</mapper>

これが4つであれば、別メソッドに渡すときに1つずつ書いても冗長化しないかなとは思いますが15~16個となった場合には可読性も悪くなってしまうかなと思います。
そこで、別の変数に代入して別メソッドに引数として渡すようにしようと思うのですがなにかいい方法はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

データの利用側で Mapper を直接参照するのではなく @Repository を経由して利用するのはいかがでしょうか?
My Batis では冗長で複雑になりやすいデータの集約などが書きやすくなると思います。

java

1@Repository 2public class CompoRepository { 3 private final mapper mapper; 4 // コンストラクタ略 5 6 public Compo compo() { 7 List<AClass> resultA = mapper.selectA(); 8 List<BClass> resultB = mapper.selectB(); 9 List<CClass> resultC = mapper.selectC(); 10 List<DClass> resultD = mapper.selectD(); 11 12 return new Compo(resultA, resultB, resultC, resultD); 13 } 14}

直接 class を作成しましたが interfaceimplements で分離するかは調整してください。

投稿2018/04/26 14:52

TM3tmlab

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問