MybatisPlus 中的SQL 使用方式
官网查询对应的函数:
https://baomidou.com/pages/10c804/#ge
测试函数实例:
1、定义实体类:
数据库自己去建一张表对应的。
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 手机号码
*/
private String phone;
/**
* 密码,加密存储
*/
private String password;
/**
* 昵称,默认是随机字符
*/
private String nickName;
/**
* 用户头像
*/
private String icon = "";
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
2、测试
/**
* @author hzq
* @date 2022年11月12日 14:20
*/
@SpringBootTest
public class WrapperTest {
@Resource
UserMapper userMapper;
@Test
public void contextLoads() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.isNotNull("phone");
userMapper.selectList(wrapper).forEach(s -> {
System.out.println(s);
});
}
/**
* 查询多条数据使用selectList
* 主要测试 如何查询只需要 1条数据的场景
*/
@Test
public void contextOne() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("nick_Name","小鱼同学");
String name = userMapper.selectOne(wrapper).getNickName();
System.out.println(name);
}
/**
* 查询多条数据使用selectList
* 主要测试 如何查询多条数据场景
*/
@Test
public void contextList(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
List<User> list = userMapper.selectList(wrapper);
System.out.println(list);
}
/**
* 根据id主键查询1-10 的用户
* 主要测试 between and 函数 场景
*/
@Test
public void contextBetweenAnd(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("id", 1L, 10L);
List<Object> objects = userMapper.selectObjs(wrapper);
Integer count = userMapper.selectCount(wrapper);
System.out.println("统计总个数:{}"+count);
System.out.println("查询出的详细信息:{}"+objects);
}
/**
* <> !=
* 主要测试 不等于某个值 的场景
*/
@Test
public void contextNe() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.ne("id", 1);
List<User> users = userMapper.selectList(wrapper);
System.out.println("统计总个数:{}"+users);
}
/** 其中AND表示并且的意思,OR表示或者的意思
*
*
* SELECT * from tb_user WHERE id =1 or id =5
* 测试 两个字段同时满足的场景(查询出来的是两条数据)
*
* 如果使用的and 的话 就是如下SQL 1 和 5 同时满足的场景才能查询来数据 所以试了下没查询数据在数据库
* SELECT * from tb_user WHERE id =1 and id =5
*
*/
@Test
public void contextOr(){
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("id",1).or()
.eq("id",5);
List<User> list = userMapper.selectList(wrapper);
list.forEach(s ->{
System.out.println(s);
});
}
}
3、and 和 or的讲解 (主要学习对象)
https://zhuanlan.zhihu.com/p/250196593
总结:
写这篇文章的主要初心就是为了复习下之前学习的这些语法,因为工作中正好用到了,遇到一些问题,不得以在来看看自己跑下Demo喽。
如果有不对的地方还望各位指正错误,一定虚心接收!!!