MyBatis – Annotations
MyBatis là gì? Trong các bài học trước, chúng ta đã biết làm thế nào để thực hiện các thao tác với database bằng cách sử dụng MyBatis. Khi đó chúng ta sử dụng một file Mapper XML để định nghĩa các câu lệnh mapped SQL và một file cấu hình XML để cấu hình MyBatis. Từ MyBatis 3 ...
Trong các bài học trước, chúng ta đã biết làm thế nào để thực hiện các thao tác với database bằng cách sử dụng MyBatis. Khi đó chúng ta sử dụng một file Mapper XML để định nghĩa các câu lệnh mapped SQL và một file cấu hình XML để cấu hình MyBatis.
Từ MyBatis 3, MyBatis cũng cung cấp các annotation để định nghĩa các câu lệnh SQL.
Khi sử dụng các annotation thay vì file cấu hình XML, chúng ta có thể sử dụng một interface trong java đinh nghĩa và thực thi các câu truy vấn SQL dựa trên các annotaion. Dưới đây là các ví dụ.
Các ví dụ về MyBatis Anntations
Giả sử bảng có tên details.Student tồn tại trong MySQL database có dạng như sau:
+----+-------+--------+------------+-----------+---------------+ | ID | NAME | BRANCH | PERCENTAGE | PHONE | EMAIL | +----+-------+--------+------------+-----------+---------------+ | 1 | Shyam | it | 80 | 954788457 | mail@mail.com | +----+-------+--------+------------+-----------+---------------+
Giả sử tồn tại một lớp POJO có tên Student nằm trong package mybatis.entity tương ứng với bảng trên.
public class Student { private int id; private String name; private String branch; private int percentage; private int phone; private String email; //Setters and getters }
Ví dụ câu lệnh insert sử dụng annotation
// inert student
final String INSERT_STUDENT = "INSERT INTO STUDENT (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) "
+ "VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email})";
@Update(INSERT_STUDENT)
@Options(useGeneratedKeys = true, keyProperty = "id")
public void insert(Student student);
Ví dụ câu lệnh update sử dụng annotation
// update student
final String UPDATE_STUDENT = "UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, "
+ "BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}";
@Update(UPDATE_STUDENT)
public void update(Student student);
Ví dụ câu lệnh delete sử dụng annotation
// delete student by id
final String DELETE_STUDENT_BY_ID = "DELETE from STUDENT WHERE ID = #{id}";
@Delete(DELETE_STUDENT_BY_ID)
public void delete(int id);
Ví dụ câu lệnh select sử dụng annotation
// inert student final String INSERT_STUDENT = "INSERT INTO STUDENT (NAME, BRANCH, PERCENTAGE, PHONE, EMAIL ) " + "VALUES (#{name}, #{branch}, #{percentage}, #{phone}, #{email})"; @Update(INSERT_STUDENT) @Options(useGeneratedKeys = true, keyProperty = "id") public void insert(Student student);
// update student final String UPDATE_STUDENT = "UPDATE STUDENT SET EMAIL = #{email}, NAME = #{name}, " + "BRANCH = #{branch}, PERCENTAGE = #{percentage}, PHONE = #{phone} WHERE ID = #{id}"; @Update(UPDATE_STUDENT) public void update(Student student);
// delete student by id final String DELETE_STUDENT_BY_ID = "DELETE from STUDENT WHERE ID = #{id}"; @Delete(DELETE_STUDENT_BY_ID) public void delete(int id);
Câu lệnh selectAll
final String GET_ALL_STUDENT = "SELECT * FROM STUDENT"; @Select(GET_ALL_STUDENT) @Results(value = { @Result(property = "id", column = "ID"), @Result(property = "name", column = "NAME"), @Result(property = "branch", column = "BRANCH"), @Result(property = "percentage", column = "PERCENTAGE"), @Result(property = "phone", column = "PHONE"), @Result(property = "email", column = "EMAIL") }) public List<Student> getAll();
Câu lệnh getById
// get student by id final String GET_STUDENT_BY_ID = "SELECT * FROM STUDENT WHERE ID = #{id}"; @Select(GET_STUDENT_BY_ID) public Student getById(int id);