共計 2816 個字符,預計需要花費 8 分鐘才能閱讀完成。
本篇文章給大家分享的是有關 Mybatis_day03 中怎么輸入和輸出映射,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
輸入映射和輸出映射
Mapper.xml 映射文件中定義了操作數據庫的 sql,每個 sql 是一個 statement,映射文件是 mybatis 的核心。
1.parameterType(輸入類型)
傳遞簡單類型
參考第一天內容。
傳遞 pojo 對象
Mybatis 使用 ognl 表達式解析對象字段的值,#{} 或者 ${} 括號中的值為 pojo 屬性名稱。
傳遞 pojo 包裝對象
開發中通過 pojo 傳遞查詢條件,查詢條件是綜合的查詢條件,不僅包括用戶查詢條件還包括其它的查詢條件 (比如將用戶購買商品信息也作為查詢條件),這時可以使用包裝對象傳遞輸入參數。
Pojo 類中包含 pojo。
需求:根據用戶名查詢用戶信息,查詢條件放到 QueryVo 的 user 屬性中。
public class QueryVo { private User user; public User getUser() { return user; } public void setUser(User user) this.user = user;* } }
Sql 語句
SELECT * FROM user where username like % 劉 %
Mapper 文件
!-- 使用包裝類型查詢用戶 使用 ognl 從對象中取屬性值,如果是包裝對象可以使用. 操作符來取內容部的屬性 -- select id= findUserByQueryVo parameterType= queryvo resultType= user SELECT * FROM user where username like %${user.username}% /select 接口 public interface UserMapper { User findUserByid(Integer id); List User findUserByUserName(String name); List User findUserByUserNameAndSex(String name,String sex); Integer insertUser(User user); Integer deleteByUserId(Integer id); Integer updateUserById(User user); List User QueryVoByUserList(QueryVo queryVo); } 測試方法 @Test public void testFindUserByQueryVo() throws Exception { SqlSession sqlSession = sessionFactory.openSession(); // 獲得 mapper 的代理對象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 創建 QueryVo 對象 QueryVo queryVo = new QueryVo(); // 創建 user 對象 User user = new User(); user.setUsername(劉 queryVo.setUser(user); // 根據 queryvo 查詢用戶 List User list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close(); }
1.resultType(輸出類型)
輸出簡單類型
參考 getnow 輸出日期類型,看下邊的例子輸出整型:
Mapper.xml 文件
!-- 獲取用戶列表總數 -- select id= findUserCount resultType= int select count(1) from user /select Mapper 接口 public int findUserCount() throws Exception; 調用: Public void testFindUserCount() throws Exception{ // 獲取 session SqlSession session = sqlSessionFactory.openSession(); // 獲取 mapper 接口實例 UserMapper userMapper = session.getMapper(UserMapper.class); // 傳遞 Hashmap 對象查詢用戶列表 int count = userMapper.findUserCount(); // 關閉 session session.close(); }
輸出簡單類型必須查詢出來的結果集有一條記錄,最終將第一個字段的值轉換為輸出類型。
使用 session 的 selectOne 可查詢單條記錄。
輸出 pojo 對象
參考第一天內容
輸出 pojo 列表
參考第一天內容。
resultMap
resultType 可以指定 pojo 將查詢結果映射為 pojo,但需要 pojo 的屬性名和 sql 查詢的列名一致方可映射成功。
如果 sql 查詢字段名和 pojo 的屬性名不一致,可以通過 resultMap 將字段名和屬性名作一個對應關系,resultMap 實質上還需要將查詢結果映射到 pojo 對象中。
resultMap 可以實現將查詢結果映射為復雜類型的 pojo,比如在查詢結果映射對象中包括 pojo 和 list 實現一對一查詢和一對多查詢。
Mapper.xml 定義
使用 resultMap 指定上邊定義的 personmap。
定義 resultMap
由于上邊的 mapper.xml 中 sql 查詢列和 Users.java 類屬性不一致,需要定義 resultMap:userListResultMap 將 sql 查詢列和 Users.java 類屬性對應起來
id/:此屬性表示查詢結果集的唯一標識,非常重要。如果是多個字段為復合唯一約束則定義多個。
Property:表示 User 類的屬性。
Column:表示 sql 查詢出來的字段名。
Column 和 property 放在一塊兒表示將 sql 查詢出來的字段映射到指定的 pojo 類屬性上。
result /:普通結果,即 pojo 的屬性。
Mapper 接口定義
public List User findUserListResultMap() throws Exception;
以上就是 Mybatis_day03 中怎么輸入和輸出映射,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。