溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mybatis_day03中怎么輸入和輸出映射

發(fā)布時(shí)間:2021-08-05 14:31:36 來源:億速云 閱讀:138 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)Mybatis_day03中怎么輸入和輸出映射,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

輸入映射和輸出映射

Mapper.xml映射文件中定義了操作數(shù)據(jù)庫的sql,每個(gè)sql是一個(gè)statement,映射文件是mybatis的核心。

1.parameterType(輸入類型)

  • 傳遞簡單類型

參考第一天內(nèi)容。

傳遞pojo對(duì)象

Mybatis使用ognl表達(dá)式解析對(duì)象字段的值,#{}或者${}括號(hào)中的值為pojo屬性名稱。

傳遞pojo包裝對(duì)象

開發(fā)中通過pojo傳遞查詢條件,查詢條件是綜合的查詢條件,不僅包括用戶查詢條件還包括其它的查詢條件(比如將用戶購買商品信息也作為查詢條件),這時(shí)可以使用包裝對(duì)象傳遞輸入?yún)?shù)。

Pojo類中包含pojo。

需求:根據(jù)用戶名查詢用戶信息,查詢條件放到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從對(duì)象中取屬性值,如果是包裝對(duì)象可以使用.操作符來取內(nèi)容部的屬性 --> <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的代理對(duì)象  UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //創(chuàng)建QueryVo對(duì)象 QueryVo queryVo = new QueryVo();  //創(chuàng)建user對(duì)象 User user = new User(); user.setUsername("劉"); queryVo.setUser(user); //根據(jù)queryvo查詢用戶 List<User> list = userMapper.findUserByQueryVo(queryVo); System.out.println(list); sqlSession.close();  }

1.resultType(輸出類型)

  • 輸出簡單類型

參考getnow輸出日期類型,看下邊的例子輸出整型:

Mapper.xml文件

<!-- 獲取用戶列表總數(shù) --> <select id="findUserCount" resultType="int"> select count(1) from user </select> Mapper接口 public int findUserCount() throws Exception; 調(diào)用: Public void testFindUserCount() throws Exception{ //獲取session SqlSession session = sqlSessionFactory.openSession(); //獲取mapper接口實(shí)例 UserMapper userMapper = session.getMapper(UserMapper.class); //傳遞Hashmap對(duì)象查詢用戶列表 int count = userMapper.findUserCount(); //關(guān)閉session session.close(); }

輸出簡單類型必須查詢出來的結(jié)果集有一條記錄,最終將第一個(gè)字段的值轉(zhuǎn)換為輸出類型。

使用session的selectOne可查詢單條記錄。

輸出pojo對(duì)象

參考第一天內(nèi)容

輸出pojo列表

參考第一天內(nèi)容。

resultMap

resultType可以指定pojo將查詢結(jié)果映射為pojo,但需要pojo的屬性名和sql查詢的列名一致方可映射成功。

如果sql查詢字段名和pojo的屬性名不一致,可以通過resultMap將字段名和屬性名作一個(gè)對(duì)應(yīng)關(guān)系,resultMap實(shí)質(zhì)上還需要將查詢結(jié)果映射到pojo對(duì)象中。

resultMap可以實(shí)現(xiàn)將查詢結(jié)果映射為復(fù)雜類型的pojo,比如在查詢結(jié)果映射對(duì)象中包括pojo和list實(shí)現(xiàn)一對(duì)一查詢和一對(duì)多查詢。

Mapper.xml定義

Mybatis_day03中怎么輸入和輸出映射

使用resultMap指定上邊定義的personmap。

定義resultMap

由于上邊的mapper.xml中sql查詢列和Users.java類屬性不一致,需要定義resultMap:userListResultMap將sql查詢列和Users.java類屬性對(duì)應(yīng)起來

Mybatis_day03中怎么輸入和輸出映射

<id/>:此屬性表示查詢結(jié)果集的唯一標(biāo)識(shí),非常重要。如果是多個(gè)字段為復(fù)合唯一約束則定義多個(gè)。

Property:表示User類的屬性。

Column:表示sql查詢出來的字段名。

Column和property放在一塊兒表示將sql查詢出來的字段映射到指定的pojo類屬性上。

<result />:普通結(jié)果,即pojo的屬性。

Mapper接口定義

public List<User> findUserListResultMap() throws Exception;

以上就是Mybatis_day03中怎么輸入和輸出映射,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI