package com.example.householdAccountBook.application.service;
//import 省略
@Service
public class ShoppingListService {
@Autowired
ShoppingListMapper shoppingListMapper;
//買い物リスト全件表示
public List<ShoppingList>findAll(){
return this.shoppingListMapper.showShoppingList();
ShoppingListMapper.java
package com.example.householdAccountBook.domain.repository;
import com.example.householdAccountBook.domain.entity.ShoppingList;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface ShoppingListMapper {
List<ShoppingList> showShoppingList();
void insertShoppingList(ShoppingList shoppinglist)
void deleteShoppingList(ShoppingList shoppinglist)
<?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">
<mapper namespace="マッピングするjavaクラスの場所">
SELECT
A.history_id,
CASE WHEN DATE_ADD(A.lasttime_housework_date, INTERVAL(B.interval_day)DAY) = CURRENT_DATE() THEN "本日"
WHEN DATE_ADD(A.lasttime_housework_date, INTERVAL(B.interval_day)DAY) <![CDATA[ < ]]> CURRENT_DATE() THEN "超過"
WHEN DATE_ADD(A.lasttime_housework_date, INTERVAL(B.interval_day)DAY) <![CDATA[ > ]]> CURRENT_DATE() THEN ""
END AS nexttime_schedule_label,
C.category_name,
B.housework_name,
DATE_ADD(A.lasttime_housework_date, INTERVAL(B.interval_day)DAY) AS nexttime_houosework_date,
DATEDIFF(CURRENT_DATE,DATE_ADD(A.lasttime_housework_date, INTERVAL(B.interval_day)DAY))*-1 AS nexttime_schedule_numerical,
D.user_name AS lasttime_user
housework_history AS A
INNER JOIN housework_works AS B
ON A.works_id = B.works_id
INNER JOIN housework_category AS C
ON B.category_id = C.category_id
INNER JOIN housework_users AS D
ON A.user_id = D.user_id
WHERE
A.history_id=#{historyId};
<insert id="insertShoppingList">
INSERT INTO ShoppingList(
place,
category,
itemName,
created_at,
updated_at
) value (
#{place},
#{category},
#{itemName},
now(),
now(),
</insert>
<delete id="deleteShoppingList">
DELETE FROM shopping WHERE id = #{id}
</delete>
</mapper>
mapper namespace
マッピングするjavaクラスの場所
com.example.householdAccountBook.domain.repository.ShoppingListMapper
resultType
結果を詰める箱
com.example.householdAccountBook.domain.entity.ShoppingList
MyBatisで不当式を書く場合は右記のようにする。
<![CDATA[ < ]]>
<![CDATA[ > ]]>
#{変数名}
#{historyId}
org.apache.ibatis.binding.BindingException: Parameter 'worksId' not found. Available parameters are [arg3, arg2, param5, arg4, arg1, arg0, param3, param4, param1, param2]
引数が2つ以上の場合は@Paramが必要
うまくいかない時 戻り値の注意点
例えばSQLでSELECTで抽出したIDなどの数値を戻したい場合でも、戻り値の型をInteger等にするとキャストエラーになる。戻り値は、xmlファイルのresultTypeで指定したEntityクラスの型にしないといけない。(下の例ではHouseworkList型)
下の例ではSELECTで抽出したcategoryIDはあくまでHouseworkListクラスのメンバー変数へ入るので、
戻り値の型はHouseworkList型にして、getter等で取り出して使用する必要がある。
class com.example.householdAccountBook.entity.HouseworkList cannot be cast to class java.lang.Integer
HouseworkListをIntegerにキャストできない。
org.apache.ibatis.builder.BuilderException:
Wrong namespace. Expected 'com.example.demo.mapper.Demomapper' but found 'com.example.demo.mapper.DemoMapper'.
xmlファイルのネームスペースにはDemoMapperと指定しているが、ファイル名がDemomapperになっている
More than 1 year has passed since last update.
SpringBoot Mybatis マッピング方法
Last updated at
Posted at
2021-09-13
ディレクトリをそろえる
ShoppingListService.java
Register as a new user and use Qiita more conveniently
-
You get articles that match your needs
-
You can efficiently read back useful information
-
You can use dark theme
What you can do with signing up