cuốn sách gpt4 ai đã làm

Câu hỏi phỏng vấn Mybatis

In lại Tác giả: Người biết Thời gian cập nhật: 2024-03-13 07:15:03 27 4
mua khóa gpt4 Nike

Câu hỏi phỏng vấn Mybatis

MyBatis là gì

MyBatis là một khung lớp bền vững tuyệt vời, một khung bán ORM (Ánh xạ quan hệ đối tượng) hỗ trợ SQL tùy chỉnh, các thủ tục được lưu trữ và ánh xạ nâng cao. MyBatis tránh được hầu hết tất cả mã JDBC và cài đặt tham số thủ công cũng như thu được tập kết quả

Ưu điểm và nhược điểm của Mybatis

Ưu điểm: So với JDBC, số lượng mã giảm hơn 50%, loại bỏ một lượng lớn mã dư thừa trong JDBC, không cần phải chuyển đổi kết nối theo cách thủ công. Lập trình dựa trên câu lệnh SQL khá linh hoạt và sẽ không gây ra bất kỳ sự cố nào. tác động đến thiết kế hiện có của ứng dụng hoặc cơ sở dữ liệu. Bất kỳ tác động nào đều rất tương thích với các cơ sở dữ liệu khác nhau. Cung cấp các thẻ ánh xạ để hỗ trợ ánh xạ trường giữa các đối tượng và cơ sở dữ liệu; với mùa xuân Nhược điểm: Khối lượng công việc viết câu lệnh SQL tương đối lớn, đặc biệt khi có nhiều trường và bảng liên quan, đòi hỏi người phát triển phải có những kỹ năng nhất định trong việc viết câu lệnh SQL phụ thuộc vào cơ sở dữ liệu, dẫn đến khả năng di chuyển cơ sở dữ liệu kém và không có khả năng thay đổi. cơ sở dữ liệu theo ý muốn.

MyBatis hoạt động như thế nào

1. Đọc tệp cấu hình lõi MyBatis (mybatis-config.xml) 2. Tải tệp ánh xạ mapper.xml (tệp ánh xạ là tệp ánh xạ SQL) 3. Xây dựng nhà máy phiên và xây dựng nhà máy phiên SqlSessionFactory thông qua môi trường MyBatis và thông tin cấu hình khác 4. Tạo một đối tượng phiên. Đối tượng SqlSession được tạo bởi nhà máy phiên. Đối tượng này chứa tất cả các phương thức để thực thi các câu lệnh SQL 5. Trình thực thi lệnh, mMyBatis. Lớp dưới cùng xác định giao diện Executor để vận hành cơ sở dữ liệu. Nó sẽ tự động tạo ra các câu lệnh SQL cần được thực thi dựa trên các tham số được SqlSession truyền và chịu trách nhiệm duy trì bộ đệm truy vấn. 6. Đối tượng MappedStatement. Có một tham số loại MappedStatement trong phương thức thực thi của giao diện Executor. Tham số này là một gói thông tin ánh xạ và được sử dụng để lưu trữ id, các tham số và thông tin khác của câu lệnh SQL được ánh xạ. Ánh xạ tham số đầu vào, các kiểu tham số đầu vào có thể là các kiểu tập hợp như Bản đồ và Danh sách, hoặc các kiểu dữ liệu cơ bản và kiểu POJO. Quá trình ánh xạ tham số đầu vào tương tự như prepareStatement của JDBC. Quá trình thiết lập các tham số đối tượng 8. Kiểu kết quả đầu ra có thể là các kiểu tập hợp như Bản đồ và Danh sách, hoặc các kiểu dữ liệu cơ bản và kiểu POJO. Quá trình ánh xạ kết quả đầu ra tương tự như quá trình phân tích cú pháp tập kết quả JDBC.

Tại sao cần biên dịch trước

Biên dịch trước SQL có nghĩa là trình điều khiển cơ sở dữ liệu biên dịch câu lệnh SQL trước khi gửi nó và các tham số đến cơ sở dữ liệu, để cơ sở dữ liệu không cần biên dịch lại khi thực thi SQL. Đối tượng preparedStatement được sử dụng trong JDBC để trừu tượng hóa các câu lệnh biên dịch trước và sử dụng tính năng biên dịch trước. Giai đoạn tiền biên dịch có thể tối ưu hóa việc thực thi SQL. Trong hầu hết các trường hợp, SQL được biên dịch trước có thể được thực thi trực tiếp và cơ sở dữ liệu không cần phải biên dịch lại theo mặc định.

Sự khác biệt giữa #{} và ${}

#{} là một trình giữ chỗ, xử lý được biên dịch trước, có thể ngăn chặn việc tiêm SQL. ${} là một ký tự nối, thay thế chuỗi, không được xử lý trước, không thể ngăn chặn việc tiêm SQL. truyền vào các tham số. Nếu nó được truyền vào dưới dạng một chuỗi, #{ trong SQL sẽ là } được thay thế bằng ?, và phương thức set của ReadyStatement được gọi để gán giá trị; khi Mybatis xử lý ${}, giá trị ban đầu được truyền vào, nghĩa là ${} được thay thế bằng giá trị của biến, tức là tương đương với việc biên dịch câu lệnh trong JDBC#{} Sau khi các biến của ${} được thay thế, các biến tương ứng với #{} sẽ tự động được thêm bằng dấu ngoặc đơn. Sau khi các biến của ${} được thay thế, các biến tương ứng với ${} sẽ không được thêm bằng dấu ngoặc đơn.

Cách lấy khóa chính được tạo

  chèn vào giá trị người dùng( user_name, user_password, create_time)(#{userName}, #{userPassword} , #{createTime, jdbcType= TIMESTAMP}) 

Phải làm gì khi tên thuộc tính trong lớp thực thể khác với tên trường trong bảng

1. Bằng cách xác định bí danh của tên trường trong câu lệnh SQL của truy vấn, hãy làm cho bí danh của tên trường nhất quán với tên thuộc tính của lớp thực thể.

2. vượt quaĐể ánh xạ sự tương ứng một-một giữa tên trường và tên thuộc tính lớp thực thể

       

Các yêu cầu khi gọi bằng giao diện trình ánh xạ của MyBatis là gì?

1. Không gian tên trong tệp Mapper.xml là tên lớp đủ điều kiện của giao diện ánh xạ. 2. Tên phương thức giao diện Mapper tương ứng với id câu lệnh sql được xác định trong mapper.xml. 3. Loại tham số đầu vào của giao diện Mapper. phương thức khớp với phương thức trong mapper.xml. Loại tham số của mỗi câu lệnh SQL được xác định là giống nhau 4. Loại tham số đầu ra của phương thức giao diện Mapper giống với Loại kết quả của mỗi câu lệnh SQL được xác định trong mapper.xml.

sql động MyBatis làm gì? Có những sql động nào?

Mybatis sql động cho phép chúng ta viết sql động dưới dạng thẻ trong tệp ánh xạ xml để hoàn thành các chức năng phán đoán logic và ghép nối động sql Mybatis cung cấp 9 loại thẻ sql động Trim|where|set|foreach|if|choose. | khi|nếu không|ràng buộc.

MyBatis thực hiện phân trang như thế nào? Nguyên tắc của plug-in phân trang là gì?

Mybatis sử dụng các đối tượng RowBounds để phân trang. Đó là phân trang bộ nhớ được thực hiện cho tập kết quả ResultSet, không phải phân trang vật lý. Bạn có thể ghi trực tiếp các tham số bằng phân trang vật lý trong SQL để hoàn thành chức năng phân trang vật lý hoặc bạn có thể sử dụng trình cắm phân trang để hoàn thành. phân trang vật lý. Nguyên tắc cơ bản của trình cắm là sử dụng giao diện trình cắm do Mybatis cung cấp để triển khai trình cắm tùy chỉnh, chặn sql được thực thi theo phương thức chặn của trình cắm thông qua proxy động jdk, sau đó viết lại sql và thêm các câu lệnh và tham số phân trang vật lý tương ứng theo phương ngữ phương ngữ Ví dụ: chọn * từ sinh viên, chặn sql và viết lại thành: select t.* from (select * from sinh viên) t limit 0, 10

Bộ đệm cấp một và cấp hai của MyBatis

Bộ đệm cấp 1: Bộ đệm cục bộ HashMap dựa trên PerpetualCache. Phạm vi lưu trữ của nó là Phiên. Khi Phiên bị xóa hoặc đóng, tất cả bộ đệm trong Phiên sẽ bị xóa theo mặc định. và Bộ đệm cấp 1. Cơ chế bộ nhớ đệm cấp độ giống nhau và bộ lưu trữ PerpetualCache và HashMap được sử dụng theo mặc định. Sự khác biệt là phạm vi lưu trữ của nó là Mapper (Không gian tên) và nguồn lưu trữ có thể được tùy chỉnh, chẳng hạn như Ehcache. Bộ đệm cấp hai không được bật theo mặc định. Để bật bộ đệm cấp hai, bạn cần triển khai giao diện tuần tự hóa Serializable (có thể được sử dụng để lưu trạng thái của đối tượng) để sử dụng lớp thuộc tính bộ đệm cấp hai. Bạn có thể định cấu hình thẻ  trong tệp ánh xạ của nó cho cơ chế cập nhật dữ liệu được lưu trong bộ đệm, khi một phạm vi nhất định (Không gian tên bộ đệm cấp một/bộ đệm cấp hai) thực hiện thao tác C/U/D, tất cả các bộ đệm trong này. phạm vi sẽ bị xóa theo mặc định.

Khi nào nên sử dụng liên kết chú thích và khi nào nên sử dụng liên kết xml?

Khi câu lệnh Sql tương đối đơn giản, hãy sử dụng liên kết chú thích; khi câu lệnh SQL tương đối phức tạp, hãy sử dụng liên kết xml. Nói chung, liên kết xml được sử dụng thường xuyên hơn.

Trong tệp ánh xạ Xml trong Mybatis, ID có thể được lặp lại trong các tệp ánh xạ xml khác nhau không?

Trong các tệp ánh xạ Xml khác nhau, nếu không gian tên được định cấu hình, id có thể được lặp lại; nếu không gian tên không được định cấu hình, id không thể lặp lại; lý do là không gian tên+id được sử dụng làm khóa của Map. không có namespace, id còn lại, id trùng lặp sẽ khiến dữ liệu ghi đè lên nhau. Với không gian tên, ID tự nhiên có thể được lặp lại. Nếu không gian tên khác thì namespace+id đương nhiên sẽ khác.
27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress