MyBatisを用いて、DBから指定したカラムを取得し、出力するという単純なWebアプリケーションを作っているのですが、SQL文にwhere句を指定すると、
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: 列"s002"は存在しません
Position: 72
The error may exist in URL [jar:file:/Applications/Eclipse_2020-06.app/Contents/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/web_sample/WEB-INF/lib/apl_dao-0.0.1-SNAPSHOT.jar!/mapper/sample/SampleMapper.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: select sample_name, sample_id from public.sample_table where sample_id=S002;
Cause: org.postgresql.util.PSQLException: ERROR: 列"s002"は存在しません
Position: 72
; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: 列"s002"は存在しません
Position: 72
というエラーが出てしまいます。
試したこと
select * from sample_table where sample_id=S002;
↓変更
select sample_name, sample_id from public.sample_table where sample_id=S002;
結果は変わらず。
DB情報
SampleMapper.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="group.study.dev.dao.sample.SampleDao"> <select id="selectAll" resultType="group.study.dev.dto.sample.SampleDto"> select sample_name, sample_id from public.sample_table where sample_id=S002; </select> </mapper>
### その他
select * from sample_table;
where句を指定せずに、全て取得するようにすると問題なく取得できました。
where句を指定するとエラーになってしまいます。
追記
UserController
package group.study.dev.sample.search.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 group.study.dev.dto.sample.SampleDto; import group.study.dev.sample.search.model.UserModel; import group.study.dev.sample.search.service.UserService; import group.study.dev.web.common.controller.AbstractController; @Controller public class UserController extends AbstractController { @Autowired private UserService userService; @RequestMapping("/search") public void init(UserModel userModel, Model model) { List<SampleDto> listAll = userService.selectAll(); model.addAttribute("listAll", listAll); System.out.println("listAll=" + listAll); } }
UserService
package group.study.dev.sample.search.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import group.study.dev.dao.sample.SampleDao; import group.study.dev.dto.sample.SampleDto; import group.study.dev.sample.search.model.UserModel; import group.study.dev.web.common.controller.AbstractController; @Service public class UserService extends AbstractController{ @Autowired private SampleDao sampleMapper; public List<SampleDto> selectAll(){ UserModel userModel = new UserModel(); //sampleMapper.selectAll(); userModel.setSampleList(sampleMapper.selectAll()); return userModel.getSampleList(); } }
UserModel
package group.study.dev.sample.search.model; import java.util.List; import group.study.dev.dto.sample.SampleDto; import group.study.dev.web.common.controller.AbstractController; import lombok.Data; @Data public class UserModel extends AbstractController{ private List<SampleDto> sampleList; }
SampleDto
package group.study.dev.dto.sample; import lombok.Data; @Data public class SampleDto { private String sample_id; private String sample_name; }
SampleDao
package group.study.dev.dao.sample; import java.util.List; import org.apache.ibatis.annotations.Mapper; import group.study.dev.dto.sample.SampleDto; @Mapper public interface SampleDao { public List<SampleDto> selectAll(); }
SampleMapper
<?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="group.study.dev.dao.sample.SampleDao"> <select id="selectAll" resultType="group.study.dev.dto.sample.SampleDto"> select sample_name, sample_id from public.sample_table where sample_id = 'S002'; </select> </mapper>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/31 04:47
2020/08/31 04:57
2020/08/31 05:07