
前提・実現したいこと
実現したいことMapperを使用して、htmlに検索結果を表示する
サンプルコードを参考に、作成したい機能のコードにあてはめていったのですが、
なぜか「MapperがController内では見つからない」と言われ続けております。
わからないので、教えてください。
発生している問題・エラーメッセージ
以下が発生したエラーメッセージです。
2018-07-19 11:02:16.985 ERROR 20264 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Field stampMapper in com.example.demo.controller.IndexController required a bean of type 'com.example.demo.mapper.StampMapper' that could not be found. Action: Consider defining a bean of type 'com.example.demo.mapper.StampMapper' in your configuration.
該当のソースコード
以下がControllerです。
### **IndexContoroller.java** package com.example.demo.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.example.demo.domain.Stamp; import com.example.demo.mapper.StampMapper; @Controller public class IndexController { @Autowired private StampMapper stampMapper ; @RequestMapping public String index(Model model) { List<Stamp> list = stampMapper.selectAll(); model.addAttribute("stamp", list); return "index"; } }
以下が、Mapperです。
### **StampMapper.java** package com.example.demo.mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.example.demo.domain.Stamp; @Mapper public interface StampMapper { List<Stamp> selectAll(); }
### **StampMapper.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"> <mapper namespace="com.example.demo.mapper.StampMapper"> <!-- 打刻情報(未登録の打刻情報を問い合わせる) --> <select id="selectAll" resultType="com.example.demo.domain.Stamp"> SELECT device_id FROM t_stamp_info </select> </mapper>
### **Stamp.java** package com.example.demo.domain; public class Stamp { String stamp_device_id; public String getStamp_device_id() { return stamp_device_id; } public void setStamp_device_id(String stamp_device_id) { this.stamp_device_id = stamp_device_id; } }
以下、pom.xmlです。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.example</groupId> 7 <artifactId>s</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>jar</packaging> 10 11 <name>s</name> 12 <description>Demo project for Spring Boot</description> 13 14 <parent> 15 <groupId>org.springframework.boot</groupId> 16 <artifactId>spring-boot-starter-parent</artifactId> 17 <version>2.0.3.RELEASE</version> 18 <relativePath/> <!-- lookup parent from repository --> 19 </parent> 20 21 <properties> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24 <java.version>1.8</java.version> 25 </properties> 26 27 <dependencies> 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-thymeleaf</artifactId> 31 </dependency> 32 <dependency> 33 <groupId>org.springframework.boot</groupId> 34 <artifactId>spring-boot-starter-web</artifactId> 35 </dependency> 36 37 <dependency> 38 <groupId>org.springframework.boot</groupId> 39 <artifactId>spring-boot-starter-test</artifactId> 40 <scope>test</scope> 41 </dependency> 42 43 <dependency> 44 <groupId>org.hibernate</groupId> 45 <artifactId>hibernate-validator</artifactId> 46 <version>5.2.4.Final</version> 47 </dependency> 48 </dependencies> 49 50 <build> 51 <plugins> 52 <plugin> 53 <groupId>org.springframework.boot</groupId> 54 <artifactId>spring-boot-maven-plugin</artifactId> 55 </plugin> 56 </plugins> 57 </build> 58 59 60</project> 61
試したこと
・sql文の変更など
補足情報(FW/ツールのバージョンなど)

必要なライブラリがたりないんじゃないのかな
MapperのBeanが見つかってないっぽいので、mybatis-spring-boot-starterを使わずmybatis-spring直使いとかなのかも知れません。そうするとMapperにMapperアノテーションを付けただけでは自動でDIコンテナに登録されなかったような。
pom.xmlも追記頂けますか?
質問ありがとうございます。pom.xmlの追記をいたしました。

kochoru 参照ライブラリが表示されてる時点でお察しだけどね
Mapperはアノテーションを付けただけになっていたと思います。DIコンテナに登録する方法などありましたら、情報頂けると幸いです。
asahina1979 これは予想外でした
Sa10 あれ、そもそもMybatisってどうやって利用してます?(=どうやってクラスパスに通してます?(=どうやってコンパイルさせてます?)) どうやってspring-bootを起動してます?
