2010-05-26 35 views
6

Giả sử tôi có truy vấn getUser với hai tham số - userName và mật khẩu. Tôi muốn có một phương pháp lập bản đồ trông như thế này:Phương pháp lập bản đồ nhiều tham số iBatis

public UserBean getUser(String userName, String password); 

Có cách nào để tôi có thể đạt được điều gì đó như thế không? Hoặc có lẽ tôi nên vượt qua trong bản đồ phương pháp bản đồ của tôi tham số (và một số parameterMap trong mapper của tôi xml)?

public UserBean getUser(Map<String, Object> paramMap); 

Tôi đang mong chờ một số gợi ý và giải thích.

Trả lời

9

Không có bất kỳ cấu hình đặc biệt nào, bạn có thể tham chiếu tham số thứ nhất và thứ hai tương ứng với # {1} và # {2}.

Nếu bạn muốn đặt tên cho các tham số, thay vì đề cập đến chúng theo số, hãy làm như sau: Trong ánh xạ XML cho câu lệnh SELECT, đặt parameterType = "map" và trong tệp giao diện, chú thích các tham số bằng @Param. Ví dụ, public UserBean getUser (@Param ("user_name" String userName, @Param ("mật khẩu") Mật khẩu String); sẽ cho phép bạn tham khảo tên người dùng và mật khẩu, trong ánh xạ XML, như # {user_name #} và # {password}, ​​tương ứng

+0

bingo! Đó là những gì tôi đã tìm kiếm :) cảm ơn rất nhiều :) Hoạt động hoàn hảo :) – jjczopek

1

Bạn không nên thay đổi chữ ký của phương pháp DAO, vấn đề duy nhất cần xem xét là cách bạn xây dựng bản đồ của mình. iBatis hỗ trợ chỉ một tham số đầu vào, và bạn phải quyết định lớp của bạn (thuộc tính parameterType) để đóng gói hai tham số ban đầu của bạn trong một.

Trong kịch bản này, bạn có thể (nhiều tuỳ chọn khác) đặt hai tham số trong một Map (HashMap, thường), hoặc (nếu các thông số tương ứng với thuộc tính của lớp UserBean) thông qua một hình nộm UserBean với hai thuộc tính thiết lập.

Trong cả hai trường hợp, việc đóng gói (xây dựng HashMap hoặc UserBean giả giữ hai tham số) sẽ được thực hiện bên trong phương thức public UserBean getUser(String userName, String password) của bạn.

+0

Cảm ơn bạn đã trả lời Tôi không phải thay đổi phương thức DAO của mình - những gì tôi muốn biết (nói chung) iBatis hỗ trợ nhiều tham số trong phương thức giao diện bản đồ :) – jjczopek

Các vấn đề liên quan