環境
- Java8
- Spring Boot 1.5.9
- mybatis-spring-boot-starter: 1.3.1
- mybatis: 3.4.5
- MyBatis
- Postgres9.6
やりたいこと
lesson
テーブルの内容をSELECT文で取得したいです。
create_table.sql
CREATE TABLE public.lesson
(
student_id integer NOT NULL DEFAULT nextval('lesson_student_id_seq'::regclass),
lesson_name text NOT NULL,
CONSTRAINT lesson_pkey PRIMARY KEY (student_id, lesson_name)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.lesson
OWNER TO postgres;
SqlMapper.xml
<select id="selectLesson" resultType="com.example.demo2.mybatis.domain.Lesson">
SELECT
student_id AS studentId
,lesson_name AS lessonName
FROM lesson
</select>
Lesson.java
@Data //lombok annotation
public class Lesson {
private int studentId;
private String lessonName;
}
StudentDao.java
@Component
public class StudentDao {
@Autowired
public SqlSession sqlSession;
public List<Lesson> selectLessonList() {
return sqlSession.selectList("selectLesson");
}
}
StudentDao
クラスのselectLessonList
メソッドを呼び出せば、lesson
テーブルの中身を取得できます。
やりたいことは実現できました。。。
SELECT結果を詰めるクラスについて
SELECT結果を詰めるLesson
クラスですが、以下のようにデフォルトコンストラクタがなくても、問題ありません。
Lesson.java
@Data //lombok annotation
public class Lesson {
private int studentId;
private String lessonName;
public Lesson(int studentId, String lessonName) {
this.studentId = studentId;
this.lessonName = lessonName;
}
}
デフォルトコンストラクタが必ず必要だと勘違いしていたので、メモとして残しておきます。