使用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