わからないこと
Mybatis generator
(https://mybatis.org/generator/) で作成したMapper
インターフェースに@Mapper
アノテーションが付与されていませんでした。
ですが、接続確認してみるとエラーにはならず実行できました
@Mapper
アノテーションを付けないと、Mapperインターフェースを認識してくれないと考えていましたが
なぜ、つけなくても実行できているのでしょうか。
@Mapper
は、どういうときにつけなくてはいけないのでしょうか?
よろしくお願いいたします。
やったこと(自動生成)
下記のような設定で、自動生成を実行しました。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 6<generatorConfiguration> 7 <context id="sadDbTables" targetRuntime="MyBatis3"> 8 <!-- DB接続設定 --> 9 <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 10 connectionURL="jdbc:mysql://127.0.0.1/hogedb" 11 userId="hoge" 12 password="passw0rd"> 13 <property name="nullCatalogMeansCurrent" value="true" /> 14 </jdbcConnection> 15 16 <!-- Select結果がマッピングされる、Javaモデルの作成設定 --> 17 <javaModelGenerator targetPackage="com.eui.sad.db.model.generator" targetProject="sad/src/main/java"> 18 <property name="enableSubPackages" value="true" /> 19 <property name="trimStrings" value="true" /> 20 </javaModelGenerator> 21 22 <!-- SQLを定義したXMLファイルの作成設定 --> 23 <sqlMapGenerator targetPackage="com.eui.sad.db.mapper" targetProject="sad/src/main/resources"> 24 <property name="enableSubPackages" value="true" /> 25 </sqlMapGenerator> 26 27 <!-- Mapperクラスの作成設定 --> 28 <javaClientGenerator type="XMLMAPPER" targetPackage="com.eui.sad.db.mapper" targetProject="sad/src/main/java"> 29 <property name="enableSubPackages" value="true" /> 30 </javaClientGenerator> 31 32 <!-- 自動生成するテーブルの設定 --> 33 <table tableName="%" 34 enableInsert="true" 35 enableSelectByPrimaryKey="true" 36 enableUpdateByPrimaryKey="true" 37 enableDeleteByPrimaryKey="true" 38 enableSelectByExample="false" 39 enableUpdateByExample="false" 40 enableDeleteByExample="false" 41 enableCountByExample="false" 42 selectByPrimaryKeyQueryId="false" 43 selectByExampleQueryId="false" 44 modelType="flat"> 45 </table> 46 </context> 47</generatorConfiguration>
やったこと(接続確認)
とりあえず、Controllerで直接実行させてみました。
参考までに、依存関係と設定ファイルも載せます。
build.gradle(抜粋)
1dependencies { 2 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 3 implementation 'org.springframework.boot:spring-boot-starter-web' 4 runtimeOnly 'mysql:mysql-connector-java' 5 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2' 6 compileOnly 'org.projectlombok:lombok' 7 developmentOnly 'org.springframework.boot:spring-boot-devtools' 8 annotationProcessor 'org.projectlombok:lombok' 9 testImplementation 'org.springframework.boot:spring-boot-starter-test' 10}
application.properties
1spring.datasource.url=jdbc:mysql://localhost/hogedb 2spring.datasource.username=hoge 3spring.datasource.password=passw0rd 4spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 5mybatis.configuration.map-underscore-to-camel-case=true
java
1package com.eui.sad.controller; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.web.bind.annotation.GetMapping; 6import org.springframework.web.bind.annotation.ResponseBody; 7 8import com.eui.sad.db.mapper.Sample1Mapper; 9import com.eui.sad.db.model.generator.Sample1; 10 11@Controller 12public class SampleController { 13 14 @Autowired 15 Sample1Mapper mapper; 16 17 @GetMapping("/sample") 18 @ResponseBody 19 public String sample() { 20 Sample1 sample = mapper.selectByPrimaryKey(1); 21 return "Hello World!" + sample.getCol1(); 22 } 23} 24
java:自動生成されたMapperインターフェース
1package com.eui.sad.db.mapper; 2 3import com.eui.sad.db.model.generator.Sample1; 4 5public interface Sample1Mapper { 6 7 /** 8 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 9 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 10 */ 11 int deleteByPrimaryKey(Integer id); 12 13 /** 14 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 15 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 16 */ 17 int insert(Sample1 row); 18 19 /** 20 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 21 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 22 */ 23 int insertSelective(Sample1 row); 24 25 /** 26 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 27 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 28 */ 29 Sample1 selectByPrimaryKey(Integer id); 30 31 /** 32 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 33 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 34 */ 35 int updateByPrimaryKeySelective(Sample1 row); 36 37 /** 38 * This method was generated by MyBatis Generator. This method corresponds to the database table sample1 39 * @mbg.generated Sun Apr 10 19:15:19 JST 2022 40 */ 41 int updateByPrimaryKeyWithBLOBs(Sample1 row); 42}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。