栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis常见动态Sql解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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}
        
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号