Mybatis查詢

赤葉秋楓發表於2023-05-19

查詢

查詢的資料為單條實體類

使用實體類進行接受即可,或者使用list,map介面均可.後面兩者比較浪費

  1. 使用實體類接受

mapper介面:


 User selectUserById(int userid);

對映檔案:使用實體類



    <!--第二個一致,對應方法名    User selectUserById(int userid); -->
  <select id="selectUserById" resultType="user">
        select * from user where userid=#{userid}
  </select>

  1. 使用Map接收

mapper介面:

Map<String ,Object> selectUserById2(@Param("userid")int userid);

對映檔案:

<!--    Map<String ,Object> selectUserById();-->
    <select id="selectUserById2" resultType="map">
        select * from user where userid=#{userid}
    </select>

呼叫:以獲取UserMapper介面的物件userMapper


Map<String ,Object> map=userMapper.selectUserById2(1);
System.out.println(map.toString());

查詢多條資料時

使用list集合接受,或者用list包裹map查詢,或者使用map集合+Mapkey("")註解

  1. 使用List集合

mapper介面:


List<User> selectAllUser();

對映檔案:

<!--    List<User> selectAllUser();-->
    <select id="selectAllUser" resultType="User">
        select * from user;
    </select>

呼叫:

//已經獲取sqlSession的情況下,建立完Usermapper物件
List<User> list= userMapper.selectAllUser();
        for (User user:list) {
            System.out.println(user);
        }

  1. 使用map+Mapkey(""),此時將註解中的屬性作為map的key,其餘屬性作為值

mapper介面:


    @MapKey("userid")//使用userid作為鍵,其餘屬性為值
   Map<String,Object> selectAllUser2();

對映檔案:

    <!-- Map<String,Object> selectAllUser2();-->
<select id="selectAllUser2" resultType="map">
    select * from user;
</select>

呼叫:


 Map<String ,Object> map2=userMapper.selectAllUser2();
        System.out.println(map2.toString());

查詢單個數量

mapper介面:

int selectCount();

對映檔案:

<!--    int selectCount();-->
    <select id="selectCount" resultType="int">
        select count(*) from user;
    </select>

對於基本屬性,均提供了其預設的別名可以直接在result Type中使用

模糊查詢

mapper介面:這裡使用username進行模糊查詢


 List<User> selectUserByLikeName( @Param("username") String username);

對映檔案:這裡可以使用三種方式,第一種是使用${},因為#{}無法在單引號中使用,要麼使用concat()進行拼接+#{},或者使用雙引號的方式括住%,常用第三種

<!--    List<User> selectUserByLikeName( @Param("username") String username);-->
    <select id="selectUserByLikeName" resultType="User">
<!--         select * from user where username like '%${username}%' -->
<!--         select * from user where username like concat('%',#{username},'%') -->
           select * from user where username like "%"#{username}"%"
  </select>

相關文章