Mybatis常见动态Sql解析

Mybatis常见动态Sql解析,第1张

Mybatis常见动态Sql解析

 创建数据表:

CREATE TABLE `User` (
  `id` Integer NOT NULL,
  `userName` varchar(100) NOT NULL,
  `passWord` varchar(30) NOT NULL,
  `realName` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 创建实体:

import lombok.Data;

@Data
public class User {
    private Integer id;
    private String userName;
    private String passWord;
    private String realName;
}
 1、

UserMapper接口如下:

import com.atzh.entity.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    
     List getUserByIf(Map map);

}

在UserMapper.xml中实现接口方法如下: 


          select * from User where
          
              userName=#{userName}
          
          
              and passWord=#{passWord}
          

测试:

    @Test
    public void test(){
        SqlSession session = MyBatisUtils.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        Map map = new HashMap();
        map.put("userName","zhihui");
        map.put("passWord","1234");
        List users = mapper.getUserByIf(map);
        for (User user : users) {
            System.out.println(user);
        }
        session.close();
    }

如果map不传入键值对时会出现select * from User where! 此时我们可以使用标签来解决问题。如下:

2、

在UserMapper.xml中实现接口方法如下: 


          select * from User
        
            
                userName=#{userName}
            
            
                and passWord=#{passWord}
            
        

说明:如果后面的条件为空,底层会自动去掉这个标签,而且在标签中,如果where后的条件是以or 或 and开头,会自动去掉or 或 and。

3、

UserMapper接口如下:

import com.atzh.entity.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    
     List getUserByIf(Map map);

     
     int updateUser(Map map);

}

在UserMapper.xml中实现接口方法如下:


        update User
        
            
                userName=#{userName},
            
            
                passWord=#{passWord},
            
        
        where id=#{id}
 

无论map中传入了userName,还是passWord,无论他们是否为空,set会自动去掉后面的逗号。就像标签会去掉or 或 and一样。

4、

UserMapper接口如下:

import com.atzh.entity.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    
     List getUserByIf(Map map);

     
     int updateUser(Map map);

     List findUser(Map map);

}

在UserMapper.xml中实现接口方法如下:


        select * from  User where id in
        
          #{item}
        
 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5575373.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存