前提・実現したいこと
mybatisで自動生成したselectByExample()を使用してDBの検索がしたいです。
発生している問題・エラーメッセージ
・検索結果がnullであること
メソッド execute() は型 MyBatis3SelectModelAdapter<List<LoginUserInfo>> で使用すべきではありません
・上記のメッセージが出力されていること
該当のソースコード
追記:ソースの情報を追加しました。
※初めてgitを使ったため、不備があれば言ってください
ソース
TestSpringApplication
java
1package com.example; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6@SpringBootApplication 7public class TestSpringApplication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(TestSpringApplication.class, args); 11 } 12 13} 14
MainController
java
1package com.example.controller; 2 3import org.mybatis.spring.annotation.MapperScan; 4import org.springframework.web.bind.annotation.PathVariable; 5import org.springframework.web.bind.annotation.RequestMapping; 6import org.springframework.web.bind.annotation.ResponseBody; 7import org.springframework.web.bind.annotation.RestController; 8 9import com.example.service.LoginLogic; 10 11 12@ResponseBody 13@RestController 14@MapperScan("com.example.db") 15public class MainController { 16 17 @RequestMapping("/login/{id}/{pw}") 18 public String login(@PathVariable String id, @PathVariable String pw) { 19 20 LoginLogic ll = new LoginLogic(); 21 ll.loginMain(id, pw); 22 23 return pw; 24 } 25 26}
LoginLogic
java
1package com.example.service; 2 3import java.util.List; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Service; 7 8import com.example.db.LoginUserInfo; 9import com.example.db.LoginUserInfoDynamicSqlSupport; 10import com.example.db.LoginUserInfoMapper; 11 12import static org.mybatis.dynamic.sql.SqlBuilder.*; 13 14import lombok.extern.slf4j.Slf4j; 15 16@Slf4j 17@Service 18public class LoginLogic { 19 20 @Autowired 21 private LoginUserInfoMapper login_user_info_mapper; 22 23 public String loginMain(String id, String pw) { 24 25 String ret = ""; 26 27 // 暗号化したpwとidでDB検索 28 try { 29 List<LoginUserInfo> loginUserInfoData = login_user_info_mapper.selectByExample() 30 .where(LoginUserInfoDynamicSqlSupport.userId, isEqualTo(id)).build().execute(); 31 }catch (Exception e) { 32 // TODO: handle exception 33 log.info(e.toString()); 34 } 35 36 37 return ret; 38 } 39 40} 41
試したこと
以下のDBをflywayで作成して、mybatisのジェネレーターでdbフォルダのファイルを生成しました。
V1__CreateUserInfo.sql
sql
1-- Table: public.login_user_info 2 3-- DROP TABLE public.login_user_info; 4 5CREATE TABLE public.login_user_info 6( 7 pw text COLLATE pg_catalog."default", 8 user_id text COLLATE pg_catalog."default" NOT NULL, 9 CONSTRAINT login_user_info_pkey PRIMARY KEY (user_id) 10) 11WITH ( 12 OIDS = FALSE 13) 14TABLESPACE pg_default; 15 16ALTER TABLE public.login_user_info 17 OWNER to postgres; 18
V2__InsertUserInfo.sql
sql
1INSERT INTO public.login_user_info (user_id, pw) 2VALUES ('admin', 'admin'); 3
デバッグで実行をして
http://localhost:8080/login/admin/adminをたたくと
selectByExample()のところでNullPointerExceptionが発生してしまいます。
自分としては、同じidのものを検索して取得してくれると思ったのですが、何故検索がうまくいかないのでしょうか?
補足情報(FW/ツールのバージョンなど)
Java13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/21 01:15