質問編集履歴

5

いらない部分があったので修正

2022/02/24 23:26

投稿

sui_15
sui_15

スコア24

test CHANGED
File without changes
test CHANGED
@@ -28,14 +28,6 @@
28
28
  <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
29
29
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
30
30
  <mapper namespace="curriculum.mapper.FoodsMapper">
31
- <select id="findByTypeAndPriceUsingClass" resultType="curriculum.domain.FoodsParam">
32
- Select
33
- *
34
- From
35
- foods
36
- Where
37
- type = #{type} AND price <![CDATA[ <= ]]> #{price}
38
- </select>
39
31
  <select id="findByQuery" resultType="curriculum.domain.FoodsQuery">
40
32
  Select
41
33
  *

4

プログラムの追加

2022/02/24 23:26

投稿

sui_15
sui_15

スコア24

test CHANGED
File without changes
test CHANGED
@@ -17,7 +17,8 @@
17
17
 
18
18
  @Test
19
19
  void test(){
20
- System.out.println(foodsMapper.findByQuery(new FoodsQuery(null, null, "アイス")));
20
+ System.out.println(foodsMapper.findByQuery(new FoodsQuery(null, null, "アイス"))); //エラー
21
+ System.out.println(foodsMapper.findByQuery(new FoodsQuery(List.of("氷菓"), null, "アイス"))); //成功する
21
22
  }
22
23
  }
23
24
  ```

3

sqlの追加

2022/02/24 23:24

投稿

sui_15
sui_15

スコア24

test CHANGED
File without changes
test CHANGED
@@ -81,4 +81,26 @@
81
81
  }
82
82
  }
83
83
  ```
84
+ ```psql
85
+ create table foods
86
+ (
87
+ id SERIAL,
88
+ name text NOT NULL,
89
+ type text NOT NULL,
90
+ price integer NOT NULL
91
+ );
84
92
 
93
+ insert into foods (name, type, price)
94
+ values ('りんご', '果物', 100),
95
+ ('いちご', '果物', 500),
96
+ ('西瓜', '果物', 2000),
97
+ ('じゃがいも', '野菜', 150),
98
+ ('白菜', '野菜', 300),
99
+ ('かぼちゃ', '野菜', 1000),
100
+ ('チョコレート', '菓子', 200),
101
+ ('バニラアイス', '氷菓', 300),
102
+ ('抹茶アイス', '氷菓', 300),
103
+ ('いちごアイス', '氷菓', 300),
104
+ ('雪見だいふく', '氷菓', 200);
105
+ ```
106
+

2

本文の修正

2022/02/24 23:23

投稿

sui_15
sui_15

スコア24

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
  というエラーが出てしまいます。
7
7
  List.ofでfoodsMapper.findByQuery(new FoodsQuery(List.of("野菜"), null, null))のようにnullでない値を入力すると正常に動作します。
8
8
  また、ほかの部分をnullにして、ifで書いた場合も正常に動作します。
9
- つまり、Listの部分のみnullのスキップがうまくいってない状態です。
9
+ つまり、Listの部分のみnullのスキップができない状態です。
10
10
 
11
11
  説明に不備等ございましたら、コメントお願いいたします。
12
12
  よろしくお願いします。ありがとう

1

全てのコードを記載しました。

2022/02/24 23:21

投稿

sui_15
sui_15

スコア24

test CHANGED
File without changes
test CHANGED
@@ -57,3 +57,28 @@
57
57
  </select>
58
58
  </mapper>
59
59
  ```
60
+ ```java
61
+ @Mapper
62
+ public interface FoodsMapper{
63
+ List<Map<String, Object>> findByQuery(FoodsQuery param);
64
+ }
65
+ ```
66
+ ```java
67
+ @Data
68
+ public class FoodsQuery {
69
+ @Column(nullable = false)
70
+ public List<String> types;
71
+ public Integer limit;
72
+ public String word;
73
+
74
+ public FoodsQuery(){
75
+ }
76
+
77
+ public FoodsQuery(List<String> types, Integer limit, String word) {
78
+ this.types = types;
79
+ this.limit = limit;
80
+ this.word = word;
81
+ }
82
+ }
83
+ ```
84
+