MyBatis là gì?
MyBatis là một persistence framework mã nguồn mở, đơn giản, gọn nhẹ và dễ sử dụng. MyBatis cung cấp các API giúp thao tác với Database dễ dàng hơn. Nó tự động ánh xạ giữa các trường của bảng trong cơ sở dữ liệu SQL và các trường trong Java POJOs (Plain Old Java Objects) theo tên trường. Các ...
MyBatis là một persistence framework mã nguồn mở, đơn giản, gọn nhẹ và dễ sử dụng. MyBatis cung cấp các API giúp thao tác với Database dễ dàng hơn. Nó tự động ánh xạ giữa các trường của bảng trong cơ sở dữ liệu SQL và các trường trong Java POJOs (Plain Old Java Objects) theo tên trường. Các câu lệnh SQL ánh xạ được định nghĩa trong file mapper XML hoặc Annotations.
Trước đây MyBatis được gọi là iBatis và được viết ra năm 2002 bởi Clinton Begin. Mybatis 3 được thiết kế lại từ iBatis, có hỗ trợ Mapper và Annotations.
Sử dụng các API của MyBatis giúp giảm thiểu đáng kể việc phải viết mã JDBC và các cài đặt thủ công như cài đặt tham số, kết quả trả về.
Có một sự khác biệt lớn giữa MyBatis với các persistence framework khác. Đó là MyBatis nhấn mạnh việc sử dụng SQL, trong khi các framework khác như Hibernate sử dụng một ngôn ngữ truy vấn tùy chỉnh.
MyBatis được sử dụng để ánh xạ giữa các cơ sở dữ liệu SQL và Java POJOs. Nên chỉ cần bạn có kiến thức về SQL và Java là có thể sử dụng hiệu quả.
Các đặc điểm của MyBatis
- Tính đơn giản – MyBatis được nhiều người sử dụng và coi là một trong những persistence framework đơn giản nhất hiện nay.
- Phát triển nhanh – MyBatis có thể giúp việc phát triển ứng dụng nhanh hơn vì tính đơn giản và dẽ sử dụng của nó.
- Tính khả chuyển (Portability) – MyBatis có thể được cài đặt cho gần như bất kỳ ngôn ngữ hoặc nền tảng nào như Java, Ruby, và C # cho Microsoft.NET.
- Giao tiếp độc lập – MyBatis cung cấp các giao tiếp (interface) và các API độc lập với cơ sở dữ liệu.
- Open source – MyBatis là miễn phí và là một phần mềm nguồn mở.
Các lợi ích của MyBatis
- Hỗ trợ các stored procedure – MyBatis đóng gói SQL dưới dạng các stored procedure sao cho logic nghiệp vụ có thể được lưu giữ trong cơ sở dữ liệu, và ứng dụng này có tính khả chuyển và dễ triển khai và thử nghiệm hơn.
- Hỗ trợ inline SQL.
- Hỗ trợ SQL động – MyBatis cung cấp các tính năng cho các truy vấn SQL động dựa trên các tham số.
- Hỗ trợ ORM – MyBatis hỗ trợ nhiều tính năng tương tự như một ORM tool. Chẳng hạn như lazy loading, join fetching, caching, sinh ra runtime code, và kế thừa.
Cài đặt MyBatis
Để làm việc với MyBatis bạn phải thiết lập môi trường cho nó. Có 2 cách để thiết lập môi trường cho MyBatis, đó là thủ công và sử dụng maven.
1. Thiết lập thủ công
Các bước cài đặt.
- Download version mới nhất của MyBatis tại đây Download MyBatis
- Download version nhất của mysqlconnector tại đây Download MySQL Connector
- Giải nén các file vừa tải về ra các file .jar và để vào thư mục thích hợp.
- Set CLASSPATH cho các file vừa giải nén.
2. Thiết lập bằng maven
Bạn chỉ cần thêm các dependency sau vào file pom.xml
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>
Sử dụng
Các mệnh đề SQL trong mybatis có thể được định nghĩa bằng file XML (file mapper XML) hay thông qua các annotation.
Giả sử ta có java POJO là Blog và một interface BlogMapper, ta có 2 ví dụ sau:
1. Kiểu file mapper 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="org.mybatis.example.BlogMapper"> <select id="selectBlogById" parameterType="int" resultType="Blog"> select * from Blog where id = #{id} </select> </mapper>
Bạn có thể gọi câu truy vấn ở trên bằng việc sử dụng Java API
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 10);
2. Kiểu Annotation
package org.mybatis.example; public interface BlogMapper { @Select("select * from Blog where id = #{id}") Blog selectBlog(int id); }
Bạn có thể gọi câu truy vấn ở trên như sau
BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101);
Tích hợp với Spring
MyBatis-Spring tích hợp MyBatis với Spring. Thư viện này cho phép MyBatis tham gia vào các Spring transaction, build các MyBatis mapper và SqlSession và đưa chúng vào các bean, phiên dịch các ngoại lệ MyBatis thành Spring DataAccessExceptions. Cuối cùng, nó cho phép bạn xây dựng mã ứng dụng của bạn miễn phí với các dependency trên MyBatis, Spring hoặc MyBatis-Spring. Xem ví dụ trong bài: MyBatis Example – MyBatis + Spring
MyBatis Generator (MBG) – Tự động sinh các mapper trong MyBatis
Việc định nghĩa các mapper cũng có thể được sinh tự động qua các công cụ sinh mã mapper tự động. Tuy nhiên, nó chỉ hỗ trợ ta trong việc đình nghĩa các CRUD (create, retrieve, update, delete) đơn giản. Tìm hiểu thêm tại đây http://www.mybatis.org/generator/index.html