创建数据表:
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! 此时我们可以使用
在UserMapper.xml中实现接口方法如下:
select * from User userName=#{userName} and passWord=#{passWord}
说明:如果后面的条件为空,底层会自动去掉这个
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 where id=#{id} userName=#{userName}, passWord=#{passWord},
无论map中传入了userName,还是passWord,无论他们是否为空,set会自动去掉后面的逗号。就像
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中实现接口方法如下:
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);
List findUserByforeach(List list);
}
在UserMapper.xml中实现接口方法如下:



