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

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

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

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

MyBatis

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

9814閲覧

Mybatisのinsertでorg.apache.ibatis.binding.BindingExceptionが発生する

nakamaro

総合スコア8

Java

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

MyBatis

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/05/26 07:21

編集2021/05/26 08:00

前提・実現したいこと

spring bootのmybatisを使用して社員データの登録処理を作成しています。
その中でinsert処理で以下のエラーが発生しています。

発生している問題・エラーメッセージ

org.apache.ibatis.binding.BindingException: Parameter 'role' not found. Available parameters are [arg3, arg2, param5, arg4, arg1, arg0, param3, param4, param1, param2]

該当のソースコード

java

1/* 2 * map定義 3 */ 4@Mapper 5public interface EmployeeMapper { 6/* 7* こちらのselectは動いています 8*/ 9 @Select({ 10 "select employee.id,roginID,password,username,role,userrolename from employee inner join userrole ON employee.role = userrole.id where roginID = #{rogin} limit 1" 11 }) 12 Employee selectByName(String rogin); 13/* 14* 問題個所.XMLは未使用 15*/ 16 @Insert({ 17 "insert into employee (roginID,password,username,mailAddress,role) values (#{rogin},#{pass},#{name},#{mail},${role})" 18 }) 19 void insert(String rogin,String pass,String name,String mail,int role); 20} 21 22/* 23 * map呼び出し 24 */ 25public boolean registUser(UserEntryBean userEntryBean) { 26 27 //パスワードエンコード 28 String encode = (省略); 29 30 String roginID = (省略); 31 String userName = (省略); 32 String mailAddress = (省略); 33 int role = (省略); 34 35 //DBアクセス 36 employeeMapper.insert(roginID, encode, userName, mailAddress, role); 37 38 return true; 39}

試したこと

select文等は正常な動作を確認しています。
${role}を#{role}に修正して確認しましたが同じexceptionが発生しました
org.apache.ibatis.binding.BindingException: Parameter 'rogin' not found. Available parameters are [arg3, arg2, param5, arg4, arg1, arg0, param3, param4, param1, param2]

補足情報(FW/ツールのバージョンなど)

eclipse(4.19.0)
Java 11
Mysql 8.0
spring boot 2.5.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

${role}ではなく#{role}が正しいかと思います。


2021-05-26 18:34 追記

すみません、質問の内容を誤解していました。クエリ内で#{role}として参照したい場合、引数に @Param("role") というアノテーションを付加するとよいです。

投稿2021/05/26 07:52

編集2021/05/26 09:36
neko_the_shadow

総合スコア2230

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

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

nakamaro

2021/05/26 08:02

#{role}に修正しても今度はroginを対象に同じexceptionが発生しています。
nakamaro

2021/05/27 00:53

ありがとうございます。 引数すべてに@Paramを付けたら動作しました。 他のメソッドは引数一つで実施しており、その場合は@Param不要だったので気づけませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問