使用myBatis實現查詢(select)操作


1.<select>節點介紹

  id:命名空間中的唯一標識符,可以被用來引用這條語句

  parameterType:表示查詢語句傳入參數的類型的完全限定名或別名,支持基礎數據類型和復雜數據類型。

  resultType:查詢語句返回結果類型的完全限定名或別名。

  

  以上是內建的類型別名,還可以為自定義的類設置別名:詳情見

2.使用select完成單條件查詢

   (1)SQL映射文件

<!-- 根據id查詢用戶,獲取User -->
    <select id="getUserById" parameterType="int" resultType="User">
        select * from easybuy_user 
        where id=#{id}
    </select>

 

   (2)UserMapper接口

//根據id查詢用戶
    public User getUserById(int id) throws Exception;

 

   (3)UserServiceImpl.java

//根據id查詢用戶
    @Override
    public User getUserById(int id) {
        SqlSession session = null;
        User user = new User();
        try {
            session = MybatisUtil.createSqlSession();
            user = session.getMapper(UserMapper.class).getUserById(id);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            if (session != null) {
                session.rollback();
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
        return user;
    }

 

3.使用select完成多條件查詢

   a.將查詢條件封裝成對象入參

     (1)SQL映射文件

  <!-- 模糊查詢用戶姓名 角色 -->
  <select id="getUserListByUser" parameterType="User" resultType="User">
      select * from smbms_user 
      where userName like concat('%',#{userName},'%')
      and userRole=#{userRole}
  </select>

 

    (2)UserMapper接口

    //根據條件查詢用戶
    public List<User> getUserListByUser(User user);

 

    (3)UserServiceImpl.java

     /**
     * 獲取用戶名包含"用戶"同時用戶類型為3的用戶列表
     * 方法一:多個參數用對象來查詢
     */
    @Test
    public void testGetUserListByUser(){
        SqlSession session = null;
        List<User> userList = null;
        try {
            session = MybatisUtil.createSqlSession();
            User user1 = new User();
            /*動態SQL中的where標簽設置條件*/
            user1.setUserName("用戶");
            user1.setUserRole("1");
            userList=session.getMapper(UserMapper.class).getUserListByUser(user1);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            if (session != null) {
                session.rollback();
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
        for(User user : userList){
            log.debug("user =====> "+user.getUserName());
        }
    }

 

  b.將查詢條件封裝成Map對象入參

    (1)SQL映射文件

  <!-- 根據條件查詢用戶 -->
  <!--  注意#{map的key值} -->
  <select id="getUserListByMap" parameterType="Map" resultType="User">
      select * from smbms_user 
      where userName like concat('%',#{uName},'%') 
      and userRole = #{uRole}
  </select>

 

    (2)UserMapper接口

    //根據條件查詢用戶
    public List<User> getUserListByMap(Map<String,String> map);

 

    (3)UserService.java

      

     /**
     * 獲取用戶名包含"用戶"同時用戶類型為3的用戶列表
     * 方法二:多個參數用Map來查詢
     */
    @Test
    public void testGetUserListByMap(){
        SqlSession session = null;
        List<User> userList = null;
        try {
            session = MybatisUtil.createSqlSession();
            Map<String, String> userMap = new HashMap<String,String>();
            //動態SQL,注意看運行出來的SQL語句變化
            userMap.put("uName", "用戶");
            userMap.put("uRole", "1");
            userList = session.getMapper(UserMapper.class)
                    .getUserListByMap(userMap);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            if (session != null) {
                session.rollback();
            }
        } finally {
            if (session != null) {
                session.close();
            }
        }
        for(User user : userList){
            log.debug("user =====> "+user.getUserName()+user.getUserRoleName());
        }
    }

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM