VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

MyBatis Tuts

MyBatis - MyBatis là gì? MyBatis - file cấu hình XML MyBatis - file mapper xml MyBatis - Annotations MyBatis - Stored Procedures MyBatis - Dynamic SQL MyBatis - Hibernate

MyBatis Examples

Tạo MyBatis project trong eclipse MyBatis Example - mapper bằng file XML MyBatis Example - mapper bằng các Annotation MyBatis Example - mapper bằng file XML + interface MyBatis Example - MyBatis + Spring
1 / 3
❮ ❯

MyBatis - Dynamic SQL


MyBatis là gì?
Cấu hình XML

Dynamic SQL hay SQL động là một đặc tính vô cùng mạnh mẽ của MyBatis. Nó cho phép các lập trình viên xây dựng nên các câu truy vấn năng động. Ví dụ, nếu bạn muốn tìm kiếm student trong database dự vào tên, địa chỉ của student.

MyBatis là một ngôn ngữ Dynamic SQL mạnh mẽ với các câu lệnh SQL được viết trong file Mapper. Sau đây là các biểu thức SQL động dựa trên OGNL do MyBatis cung cấp.

  • if
  • choose (when, otherwise)
  • trim (where, set)
  • foreach

Nội dung chính

  • Câu lệnh điều kiện if
  • Các lệnh choose, when và otherwise
  • Câu lệnh where
  • Câu lệnh foreach
  • Ví dụ về SQL động trong MyBatis

Câu lệnh điều kiện if

Điều phổ biến nhất để làm trong SQL động là điều kiện bao gồm một phần của mệnh đề where. Ví dụ:

<select id = "getStudentByName" parameterType = "Student" resultType = "Student">
   SELECT * FROM STUDENT   
   <if test = "name != null">
      WHERE name LIKE #{name}
   </if> 
</select>

Trong ví dụ trên, nếu bạn truyền vào giá trị name khác null của student thì tất cả các record của student được trả về. Còn khi bạn truyền name khác null thì các record được trả về theo điều kiện LIKE.

Bạn cũng có thể khai báo nhiều câu lệnh if, ví dụ:

<select id = "getStudentByName_Id" parameterType = "Student" resultType = "Student">
   SELECT * FROM STUDENT   
   <if test = "name != null">
      WHERE name LIKE #{name}
   </if>
   <if test = "id != 0">
      AND id LIKE #{id}
   </if> 
</select>

Các lệnh choose, when và otherwise

MyBatis cung cấp một phần tử (thẻ) choose, tương tự như câu lệnh switch của Java. Nó giúp lựa chọn chỉ một trường hợp trong nhiều lựa chọn.

Ví dụ sau sẽ chỉ tìm kiếm theo name nếu nó được cung cấp, và nếu name không được cung cấp, thì chỉ tìm kiếm bằng id.

<select id = "getStudentByName_Id_phone" parameterType = "Student" resultType = "Student">
   SELECT * FROM Student WHERE id != 0
   <choose>
      <when test = "name != null">
         AND name LIKE #{name}
      </when> 
      <when test = "phone != 0">
         AND phone LIKE #{phone}
      </when>
   </choose>
</select>

Câu lệnh where

Hãy xem lại các ví dụ trước, chuyện gì sẽ xảy ra nếu không có điều kiện nào được đáp ứng? Khi đó câu lệnh SQL sẽ trông như sau:

SELECT * FROM Student
WHERE

Đó là một câu lệnh lỗi, nhưng MyBatis có cung cấp lệnh where để giải quyết vấn đề đó một cách đơn giản và gọn gàng. Ví dụ:

<select id = "getStudentByName_Id_phone" parameterType = "Student" resultType = "Student">
   SELECT * FROM STUDENT
   <where>
      <if test = "id != 0">
         id = #{id}
      </if>
      <if test = "name != null">
         AND name LIKE #{name}
      </if>
   </where>
</select>

Lệnh WHERE chỉ được chèn vào SQL, khi có một trong các điều được đáp ứng. Nếu sau WHERE là AND hoặc OR thì AND và OR bị xóa đi.

Câu lệnh foreach

Phần tử foreach cho phép bạn chỉ định một collection và khai báo các biến item và index có thể được sử dụng bên trong phần tử.

Nó cũng cho phép bạn chỉ định các chuỗi mở và đóng, và thêm một dấu phân cách để đặt giữa các lần lặp. Bạn có thể xây dựng một điều kiện IN như sau:

<select id = "selectPostIn" resultType = "domain.blog.Post">
   SELECT *
   FROM POST P
   WHERE ID in 
   <foreach item = "item" index = "index" collection = "list"
      open = "(" separator = "," close = ")">
      #{item}
   </foreach> 
</select>

Ví dụ về SQL động trong MyBatis

Download Source Code
Download Now!

MyBatis là gì?
Cấu hình XML

Recent Updates

MyBatis là gì?MyBatis - AnnotationsMyBatis - Dynamic SQLMyBatis - file cấu hình XMLMybatis - File Mapper XMLMybatis - Stored ProceduresMyBatis Example - mapper bằng AnnotationsMyBatis Example - mapper bằng file XMLMyBatis Example - mapper bằng file XML và InterfaceMyBatis Example - MyBatis + SpringSự khác nhau giữa MyBatis và HibernateTạo MyBatis project trong eclipseSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml