Các công nghệ được sử dụng trong ví dụ này:
- Eclipse KEPLER SR2
- MySQL 5.0.11
- MyBatis 3.3.0
- JDK 1.8
Cấu trúc project
Các bước thực hiện
1. Tạo project "mybatis-annotation-example-1"
Các bạn tạo project có tên "mybatis-annotation-example-1" như trong bài hướng dẫn Tạo MyBatis project trong eclipse
2. Tạo bảng details.student
CREATE TABLE details.student( ID int(10) NOT NULL AUTO_INCREMENT, NAME varchar(100) NOT NULL, BRANCH varchar(255) NOT NULL, PERCENTAGE int(3) NOT NULL, PHONE int(10) NOT NULL, EMAIL varchar(255) NOT NULL, PRIMARY KEY ( ID ) );
3. Tạo lớp Student trong package mybatis.mapper.entity
File: Student.java
package mybatis.mapper.entity; public class Student { private int id; private String name; private String branch; private int percentage; private int phone; private String email; public Student() { } public Student(String name, String branch, int percentage, int phone, String email) { super(); this.name = name; this.branch = branch; this.percentage = percentage; this.phone = phone; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBranch() { return branch; } public void setBranch(String branch) { this.branch = branch; } public int getPercentage() { return percentage; } public void setPercentage(int percentage) { this.percentage = percentage; } public int getPhone() { return phone; } public void setPhone(int phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return getClass().getName() + "[" + "id = " + id + ", name = " + name + ", branch = " + branch + ", percentage = " + percentage + ", phone = " + phone + ", email = " + email + "]"; } }
4. Tạo file cấu hình MyBatis SqlMapConfig.xml trong resources
File: SqlMapConfig.xml
<?xml version = "1.0" encoding = "UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/details" /> <property name="username" value="root" /> <property name="password" value="1234567890" /> </dataSource> </environment> </environments> <mappers> <mapper class="mybatis.mapper.StudentMapper" /> </mappers> </configuration>
5. Tạo interface StudentMapper
Tạo interface StudentMapper để định nghĩa các câu lệnh mapped SQL.
File: StudentMapper.java
package mybatis.mapper; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import mybatis.mapper.entity.Student; public interface StudentMapper { // get all student 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(); // 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); // 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}"; @Insert(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); }
6. Tạo các class để test
File: SelectAllTest.java
package mybatis.main; import java.io.IOException; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import mybatis.mapper.StudentMapper; import mybatis.mapper.entity.Student; public class SelectAllTest { public static void main(String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); // create student mapper StudentMapper studentMapper = session.getMapper(StudentMapper.class); // show list student List<Student> listStudents = studentMapper.getAll(); for (Student student : listStudents) { System.out.println(student.toString()); } // close session session.close(); } }
File: SelectByIdTest.java
public class SelectByIdTest { public static void main(String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); // create student mapper StudentMapper studentMapper = session.getMapper(StudentMapper.class); // get student by Id Student student = studentMapper.getById(12); System.out.println(student); // close session session.close(); } }
File: InsertTest.java
public class InsertTest { public static void main(String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); // create student mapper StudentMapper studentMapper = session.getMapper(StudentMapper.class); // insert student Student student = new Student("Jim", "IT", 90, 1234567, "jim-it@gmail.com"); studentMapper.insert(student); session.commit(); System.out.println("insert sucessfully"); // close session session.close(); } }
File: UpdateTest.java
public class UpdateTest { public static void main(String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); // create student mapper StudentMapper studentMapper = session.getMapper(StudentMapper.class); // update student Student student = studentMapper.getById(12); student.setName("Jim Smith"); student.setPhone(12399888); studentMapper.update(student); session.commit(); System.out.println("update sucessfully"); // close session session.close(); } }
File: DeleteByIdTest.java
public class DeleteByIdTest { public static void main(String[] args) throws IOException { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); // create student mapper StudentMapper studentMapper = session.getMapper(StudentMapper.class); // delete student studentMapper.delete(11); session.commit(); System.out.println("delete successfully"); // close session session.close(); } }
Download Source Code